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