Vitaly Bogdanov
2008-Dec-23 22:52 UTC
[compiz] compiz segmentation fault and synchronization
Hi all, I got a segmentation fault in compiz and after some analysis have a question about synchronization in core compiz functions.
Danny Baumann
2008-Dec-27 09:41 UTC
[compiz] compiz segmentation fault and synchronization
Hi,> I got a segmentation fault in compiz and after some analysis have a > question about synchronization in core compiz functions. > > From time to time when I switch my laptop between users I see > corrupted picture on the display. Also I see the following lines in > logs: > > Dec 22 22:05:34 note kernel: [44316.540242] compiz.real[6401]: > segfault at 48 ip 08055c8c sp bfd492b0 error 4 in > compiz.real[8048000+34000] > Dec 22 22:05:53 note kernel: [44332.984062] metacity[6340]: segfault > at 0 ip 080abab3 sp bfdeb8b0 error 4 in metacity[8048000+7a000] > > I looked into compiz code and found that segmentation fault happens in > src/display.c in the doPoll() function. Strict place is when w > w->next is executed in the cycle. Also I found that WatchFds used in > doPoll() can be added and removed through compAddWatchFd() and > compRemoveWatchFd() calls. Last functions are called from different > plugins. I suppose that possible issue cause is lack of > synchronization between threads that use these functions. > > Should the WatchFd usages be synchronized?No, they don't need to be - compiz is a single threaded application.> I use Ubuntu 8.10 and compiz 0.7.8 from Ubuntu repository.All backtraces that end up in doPoll() I've seen so far are from Ubuntu users. I strongly suspect that one of the patches in the Ubuntu packages is fishy - although I don't know which one. The only explanation I have for those backtraces (with a watchFd being 0x1) is stack corruption. Regards, Danny