Am Dienstag, den 06.10.2009, 01:43 +0300 schrieb Timo Korvola: > On Sunday 04 October 2009 19:21:04 Janek Kozicki wrote: > > I have found the bug. Exact place. > > I hope it is the only place. Wouldn't bet on it though. There may be > more instances, perhaps with so narrow time windows that they have never > been seen. > > > Problem is that in a very short piece of code sawfish does not expect > > a newly created window to disappear. If it does - then sawfish will > > crash. > > But why, precisely? One of the Xlib calls may have triggered > error_handler, which sets w->id = 0, but is that enough to cause a SEGV? > Is it possible that w gets garbage-collected before add_window is > finished? That would explain a lot. It seems that the garbage > collection would then have to occur after emit_pending_destroys. > > I am not really familiar with the Librep C API and it is not too well > documented, thus I am guessing here. The enclosed patch tries to > protect w from gc (you can also fetch branch "race" from my repository). > People affected by the bug might want to test it. Being unable to > reproduce the bug myself, I can't say whether it helps. > I tried about 25 times with your patch applied, and sawfish did not crash. So I merged with timo/race branch (and btw with some others of your branches, too). I also have been working under heavy loads for about an half our (...) and sawfish did also not die. Chris
Attachment:
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil