View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000787libextractorpluginspublic2004-10-30 04:162004-11-13 13:58
ReporterNDurner 
Assigned ToChristian Grothoff 
PrioritynormalSeveritycrashReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000787: OLE segfaults when two files are extracted successively
DescriptionWhen I try to index *any* two files successively
with gnunet-gtk, it segfaults at Extractor/src/plugins/ole2/gsf-shared-memory.c:40
Additional InformationI've tried to compile with the sources from libgsf CVS, but the problem still persists.
There are two files attached that crash gnunet-gtk.
TagsNo tags attached.
Attached Filestxt file icon 787-Hello1.txt [^] (6 bytes) 2004-10-30 04:16 [Show Content]
txt file icon 787-Hello2.txt [^] (6 bytes) 2004-10-30 04:17 [Show Content]

- Relationships Relation Graph ] Dependency Graph ]

-  Notes
(0001943)
Christian Grothoff (manager)
2004-10-30 18:18

The reason seems to be that the OLE2 extractor uses glib's type system, and when the plugin gets loaded the second time, the type system says that it has already loaded that type, refuses to load it again, the instantiation fails (no such type), a null pointer gets returned, unchecked access (fixed in CVS), death follows.

I thought that the problem would go away if we link glib statically into the OLE2 extractor (that way all of it should die when the OLE2 plugin is unloaded, and next time we get a fresh typesystem). This is also a good idea since it would mean that libextractor0 no longer requires glib to be installed (since glib is linked in statically now). But somehow this does _not_ solve the problem, and I don't know why :-(.

Any suggestions?
(0001944)
Christian Grothoff (manager)
2004-10-30 19:45

I have commited a version of LE that checks for the NULL pointer. The result is that the OLE2 extractor works only the first time, after that it spills an error message. But at least it no longer crashes. Here is the error:
(gnunet-gtk:10442): GLib-GObject-WARNING **: cannot register existing type `GsfInput'

(gnunet-gtk:10442): GLib-GObject-CRITICAL **: file gtype.c: line 2254 (g_type_register_static): assertion `parent_type > 0' failed

(gnunet-gtk:10442): GLib-GObject-CRITICAL **: file gobject.c: line 819 (g_object_new): assertion `G_TYPE_IS_OBJECT (object_type)' failed
(0001952)
Christian Grothoff (manager)
2004-11-12 21:19

The answer: pass -Bsymbolic to ldd.

- Issue History
Date Modified Username Field Change
2004-10-30 04:16 NDurner New Issue
2004-10-30 04:16 NDurner File Added: Hello1.txt
2004-10-30 04:17 NDurner File Added: Hello2.txt
2004-10-30 16:50 Christian Grothoff Status new => assigned
2004-10-30 16:50 Christian Grothoff Assigned To => Christian Grothoff
2004-10-30 18:18 Christian Grothoff Note Added: 0001943
2004-10-30 19:45 Christian Grothoff Note Added: 0001944
2004-11-12 21:19 Christian Grothoff Note Added: 0001952
2004-11-12 21:19 Christian Grothoff Status assigned => resolved
2004-11-12 21:19 Christian Grothoff Resolution open => fixed
2004-11-13 13:58 Christian Grothoff Status resolved => closed


Copyright © 2000 - 2012 MantisBT Group