wxPluginLibrary crashes when used in Apache module

Franky Braem f.braem at skynet.be
Thu Jan 24 11:45:25 PST 2008


Hi,

I'm building a JavaScript module with wxWidgets (see 
http://www.wxjavascript.net) to make it possible to use JavaScript and 
wxWidgets ported classes for writing server-side html pages.

I'm using wxPluginManager and wxPluginLibrary to load modules (which 
contain specific ported wx-classes). When I use this in my shell 
program, everything works. When I use it in the Apache module, I get a 
crash. The crashes when the second module is unloaded (when I only load 
one module, I don't see the crash).

The code using wxPluginManager can be watched here:
http://wxjs.svn.sourceforge.net/viewvc/wxjs/trunk/wxJS2/src/engine/module.cpp?view=markup
http://wxjs.svn.sourceforge.net/viewvc/wxjs/trunk/wxJS2/src/engine/module.h?view=markup

This is the call stack:

	wxbase28ud_vc_custom.dll!wxStringBase::c_str()  Line 527 + 0x11 bytes	C++
  	wxbase28ud_vc_custom.dll!wxStringHash::operator()(const wxString & 
x={...})  Line 570 + 0x16 bytes	C++
 
wxbase28ud_vc_custom.dll!wxDLManifest_wxImplementation_HashTable::GetNodePtr(const 
wxString & key={...})  Line 32 + 0x2d bytes	C++
 
wxbase28ud_vc_custom.dll!wxDLManifest_wxImplementation_HashTable::erase(const 
wxString & key={...})  Line 32 + 0x2c bytes	C++
  	wxbase28ud_vc_custom.dll!wxDLManifest::erase(const wxString & 
k={...})  Line 32 + 0x1a bytes	C++
  	wxbase28ud_vc_custom.dll!wxDLManifest::erase(const 
wxDLManifest_wxImplementation_HashTable::iterator & it={...})  Line 32 + 
0x1f bytes	C++
  	wxbase28ud_vc_custom.dll!wxPluginLibrary::RestoreClasses()  Line 153 
+ 0x37 bytes	C++
  	wxbase28ud_vc_custom.dll!wxPluginLibrary::~wxPluginLibrary()  Line 
103	C++
  	wxbase28ud_vc_custom.dll!wxPluginLibrary::`scalar deleting 
destructor'()  + 0x16 bytes	C++
  	wxbase28ud_vc_custom.dll!wxPluginLibrary::UnrefLib()  Line 121 + 
0x1c bytes	C++
  	wxbase28ud_vc_custom.dll!wxPluginLibrary::Unload()  Line 81 + 0x16 
bytes	C++
  	mod_wxjs.dll!wxjs::Module::~Module()  Line 47 + 0xe bytes	C++
  	mod_wxjs.dll!wxjs::Module::`scalar deleting destructor'()  + 0x16 
bytes	C++
  	mod_wxjs.dll!wxjs::Engine::UnInitialize()  Line 373 + 0x2a bytes	C++
  	mod_wxjs.dll!wxJavaScript::~wxJavaScript()  Line 70	C++
  	mod_wxjs.dll!wxJavaScript::`scalar deleting destructor'()  + 0x16 
bytes	C++
  	mod_wxjs.dll!wxjs::PoolClass::CleanUp(void * ptr=0x009c7448)  Line 51 
+ 0x22 bytes	C++
  	libapr-1.dll!run_cleanups(cleanup_t * * cref=0x0038bb08)  Line 2034 + 
0xf bytes	C
  	libapr-1.dll!apr_pool_destroy(apr_pool_t * pool=0x0038baf8)  Line 727 
+ 0xc bytes	C
  	libapr-1.dll!apr_pool_destroy(apr_pool_t * pool=0x00389ab8)  Line 724 
+ 0xc bytes	C
  	httpd.exe!destroy_and_exit_process(process_rec * process=0x008f30d8, 
int process_exit_value=0)  Line 261	C
  	httpd.exe!main(int argc=1, const char * const * argv=0x00383390) 
Line 737 + 0xb bytes	C
  	httpd.exe!__tmainCRTStartup()  Line 597 + 0x19 bytes	C
  	httpd.exe!mainCRTStartup()  Line 414	C
  	kernel32.dll!RegisterWaitForInputIdle()  + 0x49 bytes	






More information about the wx-users mailing list