On Tue, 23 Dec 2014, Nicholas Mc Guire wrote:
> On Tue, 23 Dec 2014, Julia Lawall wrote:
>
> > > Fatal error: exception Failure("meta: parse error:
> > > = File "false_declare_completion.cocci", line 27, column 14, charpos =
> > > 511
> > > around = 'DECLARE_COMPLETION', whole content = declarer name
> > > DECLARE_COMPLETION;
> > > ")
> > > ...
> >
> > OK, it's not super intuitive, but the problem is that it wants declarer
> > names, like typedefs, to be declared once and only once. And in deciding
> > about this, it doesn't take into account the dependencies on virtual
> > rules. So if you use -D patch, then it complains about a declaration in a
> > case that says depends on !patch. And if you remove the declarer name
> > declaration in the latter rule, when you use eg -D report, it takes into
> > account the declaration in the previous, but disabled, -D patch rule.
> >
> > So if you drop the second declarer name declaration, everything will be
> > fine.
> >
> > The fact that declaring a typedef, declarer name, or iterator name once
> > was good enough was supposed to make things easier, but it seems to just
> > make things confusing. Maybe I should get rid of this feature, or at
> > least not complain about redeclarations that are consistent with the
> > previous one.
> >
> it did not complain - but something seems to be going wrong now it
> consumes 100% CPU on all avaialble cores for about 8 minutes and
> finds no match
>
> hofrat@debian:/tmp/linux-next$ time make coccicheck
> COCCI=false_declare_completion.cocci MODE=report
>
> Please check for false positives in the output before submitting a patch.
> When using "patch" mode, carefully review the patch before submitting it.
>
>
> real 8m9.438s
> user 33m6.005s
> sys 0m10.277s
>
> about the same in MODE=patch, the other cocci file over the same tree ran
>
> real 0m48.492s
> user 2m26.627s
> sys 0m1.933s
>
> an example file where I had expected it to trigger is
> drivers/scsi/aha152x.c - but it did not.
>
> cut down testcse would be:
>
> test.c:
> static int aha152x_device_reset(Scsi_Cmnd * SCpnt)
> {
> struct Scsi_Host *shpnt = SCpnt->device->host;
> DECLARE_COMPLETION(done);
> int ret, issued, disconnected;
> unsigned char old_cmd_len = SCpnt->cmd_len;
> unsigned long flags;
> unsigned long timeleft;
> /* snippet from drivers/scsi/aha152x.c */
> }
>
> test.cocci:
> @e@
> expression cmp;
> identifier f;
> declarer name DECLARE_COMPLETION;
> position p;
> @@
>
> f(...) {
> <...
> - DECLARE_COMPLETION@p(cmp);
> + DECLARE_COMPLETION_ONSTACK(cmp);
> ...>
> }
>
> which should trigger if I did not do something foolish again
> but it did not:
>
> hofrat@debian:/tmp/linux-next$ spatch --sp-file test.cocci test.c
> init_defs_builtins: /usr/local/share/coccinelle/standard.h
> HANDLING: test.c
It works fine for me. What version of Coccinelle do you have?
For the performance problem, could you send the current semantic patch
again, so I could be sure to be testing the right thing?
thanks,
julia
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci