Hi All
Have anybody tried to use winelib in python modules? I need to make python bindings to some propritary DLL that available as a binary only. I made shared library that simply dynamicaly loads that DLL using winelib mono hack. It works perfectly when I link it with simple C test program but crashes when I load in python module. Just a call to SharedWineInit() causes python to crash
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1075433600 (LWP 2477)] server_init_process () at ../../include/winnt.h:1543 1543 __asm__(".byte 0x64\n\tmovl (0x18),%0" : "=r" (teb)); (gdb) bt #0 server_init_process () at ../../include/winnt.h:1543 #1 0x40497ca7 in thread_init () at thread.c:141 #2 0xbfffc588 in ?? () #3 0x40039500 in dlerror () from /lib/tls/libdl.so.2 #4 0x00000000 in ?? () #5 0xbfffd830 in ?? () #6 0xbfffc588 in ?? () #7 0x404b6140 in forcedWinVersion () from /usr/local/lib/wine/ntdll.dll.so #8 0x4003af54 in ?? () from /lib/tls/libdl.so.2 #9 0x00001f98 in ?? () #10 0x00000000 in ?? () #11 0x00000000 in ?? () #12 0x404b7000 in ?? () #13 0x00001f98 in ?? () #14 0x4003003b in pthread_rwlockattr_setkind_np () from /lib/tls/libpthread.so.0 #15 0x400390b0 in dlsym () from /lib/tls/libdl.so.2 #16 0x4003af54 in ?? () from /lib/tls/libdl.so.2 #17 0xbfffd830 in ?? () #18 0xbfffd830 in ?? () #19 0xbfffc5f8 in ?? () #20 0x40039096 in dlsym () from /lib/tls/libdl.so.2 #21 0x0817fd70 in ?? () #22 0x404b4820 in __JCR_LIST__ () from /usr/local/lib/wine/ntdll.dll.so #23 0xbfffd830 in ?? () #24 0xbfffd820 in ?? () #25 0xbfffc5f8 in ?? () #26 0x40480e48 in __wine_process_init (argc=-1995430796, argv=0xe804245c) at loader.c:2036 Previous frame inner to this frame (corrupt stack?) (gdb)
If there are any ways to initialize winelib from python module may be other than mono hack? Please answer by mail fw@tehn.ru
Thank you
Nikolay A. Liber wrote:
Have anybody tried to use winelib in python modules? I need to make python bindings to some propritary DLL that available as a binary only. I made shared library that simply dynamicaly loads that DLL using winelib mono hack. It works perfectly when I link it with simple C test program but crashes when I load in python module. Just a call to SharedWineInit() causes python to crash
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1075433600 (LWP 2477)] server_init_process () at ../../include/winnt.h:1543 1543 __asm__(".byte 0x64\n\tmovl (0x18),%0" : "=r" (teb));
I guess the "Mono hack" you're talking about either doesn't initialise the TEB, or you have integrated it wrong.
I think you'd be better off building a winelib version of the Win32 Python port, ie so the entirely of the interpreter runs as a winelib app. I don't think doing this is *too* hard ....
thanks -mike