On Sun, 06 Jun 2010 10:49:29 +1000, Ken McDonell wrote:
kenj> I think SEGV and ??? unknown are different symtoms for the same
kenj> problem ... botched pointer use in the expression tree.
They're most likely - I was trying to trip pmie indo SEGV by killing
pmcd most ungracefully while pmie was dosing off between fetches and
observing tspan going crazy but it didn't segv, using single instance
metrics was more reproducible.
>> If I change primary() to not pick arguments of NOP type I get the
>> "correct" result.
kenj> I don't think this is the correct fix ... see my earlier patch.
I didn't see how the first change to use tspan from arg1 was fixing
the problem of rippling the wrong tspan up the expression tree by selection
the "wrong" branch to ripple up.
>> Ken, what's the idea of using tspan and nvals of arguments which
>> have size of string in there instead of number of metrics?
kenj> The "node" in the expression tree is a Pascal variant record dosed with
kenj> steroids and EPO ... tspan is a synonym for string length in the case of
kenj> a constant string (sem == SEM_CHAR).
I find this very confusing - in most other places tspan seems to be
used to count number of instances and therefor truth bits in the
instance array, why use it to encode string length in the first place?
kenj> What was matginally wrong until my second round of fixes was
kenj> that nvals and nsmpls were strangely not 1 for string
kenj> constants, and then the value of a regex quitely got turned
kenj> from a string into a compiled regex with nothing in the
kenj> expression node to suggest this had happened.
I think the change of setting tspan to 1 when converting string to
regex is the key to fixing the problem.
kenj> I think this is all fixed now ... please let me know if you see any
kenj> repeats or other strangeness after my recent flurry of commits.
It worked so far.
max
|