On 11/26/2010 06:52 PM, Pádraig Brady wrote: > Hmm, seems like multiple threads are racing to update the > static "saved" variable in write_unique() ?
I don't think it's as simple as that. write_unique is generating output, and when it is run it is supposed to have exclusive access to the output file, which means it also has exclusive access to the "saved" variable. I suspect the problem is that the line structure is messed up when you have multiple threads and sufficiently large input, in that when one merge node is done and the next one is run, the "saved" variable (which points to storage managed by the earlier node) is pointing to storage that is no longer valid. I haven't had time to look into the details, though. Chen, do you have some insight into this? Here's the thread: http://lists.gnu.org/archive/html/bug-coreutils/2010-11/msg00209.html I have now reproduced the bug on RHEL 5.5 x86-64, using coreutils 8.7 built with "configure CC='cc -m32'". The bug is also present in the savannah git master.