Re: [PATCH] libtracefs: Destroy synthetic and eprobes before other events

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 18 Oct 2024 10:13:11 +0100
Metin Kaya <metin.kaya@xxxxxxx> wrote:

> On 17/10/2024 9:01 pm, Steven Rostedt wrote:
> > On Thu, 17 Oct 2024 09:38:35 +0100
> > Metin Kaya <metin.kaya@xxxxxxx> wrote:
> >   
> >> I see one more failure in this section of unit tests:
> >>
> >>     Test: tracefs_iterate_snapshot_events API ...FAILED
> >>       1. tracefs-utest.c:235  - ret == sizeof(struct test_sample)
> >>       2. tracefs-utest.c:235  - ret == sizeof(struct test_sample)
> >>       3. tracefs-utest.c:235  - ret == sizeof(struct test_sample)
> >>  
> > 
> > Does this occur without this patch? IOW, is this caused by this patch?  
> 
> I thought there were 2 "tracefs-utest.c:235  - ret == sizeof(struct 
> test_sample)" failures before this patch and this patch increased the 
> number of failures by 1. However, this does not seem to be 100% correct. 
> I sometimes see only 1 failure, but then there are 2-3 of them.
> 
> I do trace-cmd reset && unmount before running the unit tests.

Yeah, this is probably something different.

> 
> >   
> >> I did run trace-cmd reset and unmounted my tracefs before running the
> >> unit tests.
> >> Please feel free to ignore if something is weirdly wrong in my setup.
> >>
> >> Other than that -kind of existing- failure, the patch looks good to me
> >> (e.g., trace-cmd unit tests are working fine).  
> > 
> > 
> > Can you add a printf("ret = %d\n", ret) to find out what "ret" is?  
> 
> Here is the output with printf's:
> 
>    ...
>    Test: tracefs_iterate_snapshot_events API ...
> line=237 i=87 path=n~_ cpu=55 value=2046397138 ret=-1
> FAILED
>      1. tracefs-utest.c:240  - ret == sizeof(struct test_sample)
>    Test: tracefs_iterate_raw_events API ...
> line=237 i=1444 path=~_ cpu=50 value=1150454427 ret=-1
> FAILED
>      1. tracefs-utest.c:240  - ret == sizeof(struct test_sample)
>    Test: Follow events ...passed
>    ...

Hmm, looking at the code, I think it should be using trace_marker_raw and
not trace_marker. Although I don't believe that will fix this, it is still
something that needs to be changed.

-	path = tracefs_instance_get_file(instance, "trace_marker");
+	path = tracefs_instance_get_file(instance, "trace_marker_raw");

As trace_marker expects strings but trace_marker_raw takes binary data, and
we are writing binary data here.

Could you also add a "perror()" when it fails. The ret=-1 means the write
failed, so it would be good to know why it failed.

>    Test: uprobes ...
> line=2229 ename=utest_u 
> address=/libtracefs/utest/trace-utest:0x00000000000003e8 event=utest_u 
> system=utest format=arg1=$stack2 prefix=p type=0x000004 ret=-1
> 
> line=2229 ename=utest_r 
> address=/libtracefs/utest/trace-utest:0x00000000000003e8 event=utest_r 
> system=utest format=arg1=$retval prefix=r type=0x000008 ret=-1
> FAILED
>      1. tracefs-utest.c:2232  - ret == 0
>      2. tracefs-utest.c:2232  - ret == 0
> 
> 
> And this is the output with your "libtracefs utest: Fixes and new tests" 
> patch series [1]:
> 
>    Test: tracefs_iterate_raw_events API ...
> line=237 i=2532 path=Db cpu=0 value=1144606227 ret=-1
> 
> line=237 i=1285 path=ו3b cpu=6 value=1157898007 ret=-1
> FAILED
>      1. tracefs-utest.c:240  - ret == sizeof(struct test_sample)
>      2. tracefs-utest.c:240  - ret == sizeof(struct test_sample)
>    Test: Follow events ...passed
>    Test: Follow events clear ...passed
>    Test: tracefs_tracers API ...passed
>    Test: tracefs_local events API ...passed
>    Test: tracefs_instances_walk API ...passed
>    Test: tracefs_get_clock API ...passed
>    Test: tracing on / off ...passed
>    Test: tracing options ...passed
>    Test: custom system directory ...passed
>    Test: ftrace marker ...passed
>    Test: kprobes ...passed
>    Test: synthetic events ...passed
>    Test: eprobes ...passed
>    Test: uprobes ...
> line=2249 ename=utest_u 
> address=/ssd/tracecmd-work/libtracefs/utest/trace-utest:0x00000000000003e8 
> event=utest_u system=utest format=arg1=$stack2 prefix=p type=0x000004 ret=-1
> 
> line=2249 ename=utest_r 
> address=/ssd/tracecmd-work/libtracefs/utest/trace-utest:0x00000000000003e8 
> event=utest_r system=utest format=arg1=$retval prefix=r type=0x000008 ret=-1
> FAILED
>      1. tracefs-utest.c:2252  - ret == 0
>      2. tracefs-utest.c:2252  - ret == 0
>    Test: multi probe test ...
> line=2249 ename=utest_u 
> address=/ssd/tracecmd-work/libtracefs/utest/trace-utest:0x00000000000003e8 
> event=utest_u system=utest format=arg1=$stack2 prefix=p type=0x000004 ret=-1
> 
> line=2249 ename=utest_r 
> address=/ssd/tracecmd-work/libtracefs/utest/trace-utest:0x00000000000003e8 
> event=utest_r system=utest format=arg1=$retval prefix=r type=0x000008 ret=-1
> FAILED
>      1. tracefs-utest.c:2252  - ret == 0
>      2. tracefs-utest.c:2252  - ret == 0

Can you tell me what is at line 2252 because I don't know what patches you
have applied, and 2252 in my code doesn't mean anything.

Thanks,

-- Steve





[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux