A recent feature addition in GnomeSword is providing an icon in the module manager to say whether a clucene index exists for each module. This is very blunt:
SWModule *mod = mgr->Modules.find(mod_name)->second; return mod->hasSearchFramework(); This reproducibly upchucks, only when installing a new module. That is, after any new modules have finished being installed from the repository, we shut down/re-init the backend, and then we re-build the module display tree, passing through this code for each module. For all modules except the brand new one, "mod" gets a reasonable value, and mod->hasSearchFramework() returns something sensible for us. For a new module, I still get a reasonable value for mod, but then the call to hasSearchFramework() dies on SEGV. (We should simply get back "false" because no index has yet been built.) I can't see anything that we should be doing differently -- by the time we're re-building the module display tree, every module that has been installed should be fully present and all the usual tests against them should be appropriate. Is anyone else familiar with a failure mode of this sort? Have I missed something else that should be done? --karl PS- This is in main_has_search_framework(), a C wrapper function to the C++ interface. "mgr" has the same value for every module as we pass through this code, and the "mod" values all look appropriate. Breakpoint 1, main_has_search_framework (mod_name=0xaf89de0 "ERda_en") at sword.cc:1358 1358 SWModule *mod = mgr->Modules.find(mod_name)->second; (gdb) p mgr $29 = (struct sword::SWMgr *) 0x9671a70 (gdb) n 1359 return mod->hasSearchFramework(); (gdb) p mod $30 = (struct sword::SWModule *) 0x96545c0 (gdb) n Program received signal SIGSEGV, Segmentation fault. 0x080cc57a in main_has_search_framework (mod_name=0xaf89de0 "ERda_en") at sword.cc:1359 1359 return mod->hasSearchFramework(); _______________________________________________ sword-devel mailing list: sword-devel@crosswire.org http://www.crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page