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