View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000787 | libextractor | plugins | public | 2004-10-30 04:16 | 2004-11-13 13:58 |
| Reporter | NDurner | Assigned To | Christian Grothoff | ||
| Priority | normal | Severity | crash | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Summary | 0000787: OLE segfaults when two files are extracted successively | ||||
| Description | When I try to index *any* two files successively with gnunet-gtk, it segfaults at Extractor/src/plugins/ole2/gsf-shared-memory.c:40 | ||||
| Additional Information | I've tried to compile with the sources from libgsf CVS, but the problem still persists. There are two files attached that crash gnunet-gtk. | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
|
|
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? |
|
|
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 |
|
|
The answer: pass -Bsymbolic to ldd. |
| 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 |