Hi Didier,

Thank you for trying the patch :) and all the good comments given.

I've attached a new patch to the wiki. Please see my detailed reply below.


On Fri, Mar 20, 2009 at 6:30 AM, didier <dgauthe...@magic.fr> wrote:

> Hi,
>
> Le mercredi 18 mars 2009 à 23:05 +0800, yami a écrit :
> > Thanks, I've written a page in Wiki:
> >   http://wiki.wireshark.org/Development/FastFiltering
> Nice work.
>
> - If compiled without NDEBUG defined I get a failed assert:
> epan/dfilter/wslimmat.c :1680 : fix_variables:  "v->assignment == v"
>
It seems like a 'bug' of gcc optimization. We can simply remove this
assertion, see explanations below.

The assertion fails, but the 'real' value of v->assignment and v are equal.
I came to this conclusion by following experiments (is there any better
way?):

experiment 1. without NDEBUG defined, but using '-O0' to compile, not
assertion failure occurs.
experiment 2. no change to Makefile, simply add printf(v->assignment, v) to
fix_pointer(), no assertion failure
experiment 3. no change to Makefile, add following to fix_variables() after
the assert line:
      if (v->assignment != v)
          printf("not hold v->assignment=%p, v=%p\n", v->assignment, v);
      else
          printf("    hold v->assignment=%p, v=%p\n", v->assignment, v);

The assertion fails (simply print, no abort), however output is:
             hold v->assignment=0x8070508, v=0x8070508

which just says the opposite.


> valgrind doesn't complain and it seems to work with NDEBUG but only for
> simple stuff ie udp && dns, something like !(tcp.stream eq 1)
> && !(tcp.stream eq 2) doesn't return the right result.
> ie:
> follow TCP stream, filter out this stream, follow TCP this stream, and
> so on.
> Does it work for you?


This is a bug, I've fixed '!' (TEST_OP_NOT) part at least. I'll test the
patch more.

>
>
> - stupid but Limmat uses the original BSD license which is incompatible
> with the GPL.
>

Really? I've thought BSD license is looser than GPL (can you give me more
details?).
On the other hand, I find Wireshark code has already contains similar
licenses (am I right?), for example,
Menu -> Help -> About Wireshark -> License -> Part III has metioned some.

>
> - On the other hand if expressions are made incrementally via popup
> menus is a full SAT solver need?
>

Perhaps you are right, but I'm not sure.

However using a SAT solver (even if it is a simple one) is the most
generalized way, which requires no special handling. And it is also a good
example of how math is applied in real life :)

Cons are
1. SAT solvers are complicated. (But we may use a simple algorithm)
2. Public available SAT solvers are mainly wrote by researchers, which may
not have time to maintain the software.

>
> eg:
> Something like
> tcp.stream eq 1 --> H1
>
> !(tcp.stream eq 1) --> !H1 --> H2
>
> tcp.stream eq 2 --> H3
>
> !(tcp.stream eq 1) && !(tcp.stream eq 2) --> H2 && !H3
>
> may be good enough.
>
> Didier
>
>
>
> ___________________________________________________________________________
> Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
> Archives:    http://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
>             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe
>
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to