Hartmut Birr wrote:
I think your patch isn't correct. The parsing
routine from an object
must always reference the returned object because an other thread may
try to remove this object. Since a long time I'm searching for a bug
which corrupts the registry and which crashs ros on my smp machine. It
was always triggered by the font substitution query routine from win32k.
I've added a missing locking operation and moved the referencing into
the locked region. This fixes my smp crash and may also fix James
problem. My test condition is compiling ros on ros in one console and
running ctm in an other one.
My patch does reference returned objects, that's the whole clue which
wasn't done for symbolic links and caused too many dereferences. Alex
Ionescu and James Tabor independently tested it, compiling ros on ros
works fine and all other known cases that triggered this bug crashing
ros also seem to be fixed. The patch already is in alex's branch and is
going to be merged to trunk.
However holding the registry lock while parsing might be a good idea, i
should propably test on a SMP machine.
Best Regards,
Thomas