From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikolaus@rath.org (Nikolaus Rath) Date: Mon, 10 Oct 2016 16:00:24 -0700 Subject: [Cocci] Replacing one (specific!) type with another In-Reply-To: (Julia Lawall's message of "Mon, 10 Oct 2016 23:33:21 +0200 (CEST)") References: <87r37vzd8j.fsf@vostro.rath.org> <87shsa7p71.fsf@thinkpad.rath.org> <8760p3jwr3.fsf@vostro.rath.org> <87ponay35u.fsf@vostro.rath.org> <87wphhz1x5.fsf@vostro.rath.org> <877f9gqjsn.fsf@vostro.rath.org> <87shs4oxeh.fsf@vostro.rath.org> <87k2dfq4i8.fsf@vostro.rath.org> Message-ID: <87h98jq06v.fsf@vostro.rath.org> To: cocci@systeme.lip6.fr List-Id: cocci@systeme.lip6.fr On Oct 10 2016, Julia Lawall wrote: >> Ok, we're getting there. I've removed the second 'symbol' line, and >> (permanently) updated to 1.0.6. However, now it seems to simply run >> forever: >> >> $ ../coccinelle-1.0.6/spatch.opt --sp-file >> ~/in-progress/libfuse/se-rename.cocci --in-place lib/ include/ test/ >> example/ util/ >> init_defs_builtins: /home/nikratio/tmp/coccinelle-1.0.6/standard.h >> warning: patch output can only be created when only one >> directory is specified or when the -patch flag is used >> HANDLING: lib/fuse.c >> (ONCE) Expected tokens fuse_session f >> Skipping:lib/fuse_opt.c >> HANDLING: lib/helper.c >> Skipping:lib/mount_bsd.c >> Skipping:lib/fuse_loop_mt.c >> Skipping:lib/fuse_loop.c >> HANDLING: lib/cuse_lowlevel.c >> diff = >> [...] >> HANDLING: lib/fuse_lowlevel.c >> >> At this point it has been hanging for about 15 minutes now, steady >> eating CPU time. >> >> Is it supposed to take that long? The fuse_lowlevel.c file is 74k with >> 2465 lines of code. > > You can use --show-trying to see what function it is getting stuck on. If > the function has a lot of ifs and loops, it may indeed take a long > time. ... follows possible paths in the execution graph and a sequence of > ifs makes the number of paths grow exponentially. > > A solution is to add a timeout, eg --timeout 120 (120 seconds). You will > need to check a file on which there is a timeout manually. > > Tracing paths around loops is not really relevant in your case, so you can > also safely use the option --no-loops, which will avoid taking the back > edges. I tried doing both, but it still gets stuck: init_defs_builtins: /home/nikratio/tmp/coccinelle-1.0.6/standard.h HANDLING: lib/fuse_lowlevel.c ----------------------------------------------------------------------- rule starting on line 1 = ----------------------------------------------------------------------- [...] ----------------------------------------------------------------------- rule starting on line 13 = ----------------------------------------------------------------------- [...] trying function: do_init: fuse_lowlevel.c:1812 The do_init() function doesn't seem all that terrible to me though: https://github.com/libfuse/libfuse/blob/58273972f0b20/lib/fuse_lowlevel.c#L1812 Best, -Nikolaus -- GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F ?Time flies like an arrow, fruit flies like a Banana.?