a double-free would be an obvious bug. I doubt that it is the problem. Anyway, I tested it by simply disabling all free calls in my code. So nothing that I allocate is freed anymore. The bug persists.
Cheers, Sebastian On Sunday 23 March 2008 11:59:28 Lauri Aalto wrote: > On Fri, Mar 21, 2008 at 7:34 PM, Sebastian Trüg <[EMAIL PROTECTED]> wrote: > > Nevermind. > > Apparently one needs to create one world instance for each storage. At > > least that is what fixed the issue. I personally think this should be > > stated in the documentation. ;) > > I think that's not the issue. > > I created some quick tests that parse in RDF/XML data with both typed > and plain literals to two librdf_models on top of bdb hash > librdf_storages created on top of the same librdf_world instance and > run some queries. I could not reproduce the problem you saw. (However, > this is a 32 bit system, not 64 bit like yours.) > > >From your gdb backtrace it looks like the datatype_uri is a valid > > pointer i.e. the datatype uri was valid at some point. Since the uri > has turned invalid, apparently the memory has been overwritten later. > Are you sure you don't have the same datatype uris in your code and > accidentally e.g. double delete them --- redland uris are shared, > reference counted objects and when the count becomes zero, the object > is freed, possibly leaving dangling pointers behind. In this case, > another librdf_world instance provides a workaround because uri > objects are not shared across world instances. > > Please try to produce a test case that reproduces this issue without > using any additional APIs on top of librdf. > > Lauri > _______________________________________________ > redland-dev mailing list > [email protected] > http://lists.librdf.org/mailman/listinfo/redland-dev _______________________________________________ redland-dev mailing list [email protected] http://lists.librdf.org/mailman/listinfo/redland-dev
