|
From: Mark E. <ma...@mp...> - 2010-08-22 09:34:41
|
On Sun, 2010-08-22 at 00:17 +0200, Daniel Gollub wrote: > On Sunday, August 22, 2010 04:09:35 am Mark Ellis wrote: > > In short, the problem seems to be in OSyncList memory allocation, which > > uses GSlice. I've pretty much figured out that the code using OSyncList > > and therefore GSlice runs through once ok, but falls over the second > > time around. If I had to guess, I would say that something is > > reinitialising the slice allocator unsafely in another thread, but I'm > > guessing wildly. > > Could you provie for this issue a small demo application using OSyncList to > reproduce the problem? I would look into that then .. > Hi Daniel I don't believe it's OSyncList specifically, but instead something to do with threading and initialisation of the slice allocator. If you want to reproduce it, just set up a sync group containing the python sample plugin, all latest svn, and run a discover on it with osynctool, you'll get a sugfault. Now run it again with G_SLICE=always-malloc and it won't segfault. It won't work either, but that's an entirely different problem ! I've done a lot of analysis, rebuilding libopensync and glib with extra logging, and at some point the slice allocator is getting a completely bizarre and invalid address to allocate from. This address is then passed out into an OSyncList allocation request and segfaults. I'm going away for a couple of weeks today, but I'll try and sort out my notes and send them on. Mark |