Google
 
Webnews.only-4-geeks.com
Interesting places
news.only-4-geeks.com Forum Index » Python

Segmentation Fault on CDLL reloading

 
Jump to:  
 
Marcus.CM
PostPosted: Sat Aug 30, 2008 10:12 am    Post subject: Segmentation Fault on CDLL reloading
       
Hi,

I use the following ctype to load a .so library in Linux.

vr = ctypes.CDLL(sstr)

And the following to release it so that i can reload the library without
quiting the python script.

_ctypes.dlclose(vr._handle)

These calls are guarded by a writer lock and access to it guarded by a
reader lock which i got from recipe :
LINK

The problem is during the re-loading of the library occasionally the
python script will abort with "Segmentation Fault". This is like 1 out
of 10 times it can happen and that
is good enough to kill the application.

Is there any reason to this or how to do i prevent it?


Marcus .CM
 

 
Diez B. Roggisch
PostPosted: Sat Aug 30, 2008 10:38 am    Post subject: Re: Segmentation Fault on CDLL reloading
       
Marcus.CM schrieb:
Quote:
Hi,

I use the following ctype to load a .so library in Linux.

vr = ctypes.CDLL(sstr)
And the following to release it so that i can reload the library without
quiting the python script.

_ctypes.dlclose(vr._handle)

These calls are guarded by a writer lock and access to it guarded by a
reader lock which i got from recipe :

The problem is during the re-loading of the library
occasionally the python script will abort with "Segmentation Fault".
This is like 1 out of 10 times it can happen and that
is good enough to kill the application.

Is there any reason to this or how to do i prevent it?

Short answer: yes, there is a reason, no, you can't prevent it.

Of course there is a reason for this. Segfaults don't happen by
chance... And one can't prevent segfaults from killing the interpreter,
because the OS is responsible for that.

Now what would I do?

- don't care. Or does the DLL frequently change when the program is
deployed? Or to ask different: why do you need unloading/reloading at all?

- debug it. Write a script that exposes the behavior. The fire up GDB
with python, do "set args <myscript>" and run. When the segfault occurs,
look into the traceback with "bt". If the problem is in the DLL-code,
see what's causing it. If it's in ctypes (or the python-interpreter) -
well, there is a ctypes mailing lisk to ask for help.

Diez
 

Page 1 of 1 .:.

Google
 
Webnews.only-4-geeks.com

Windows Update | C++ | C | PHP | JavaScript | Photoshop | Programming | Windows 2000 | Python | Windows XP | Object | Flash | Flash - ActionScript | Paint Shop Pro | Excel | PowerPoint | Access | Word | Windows 98 | Internet Explorer 6.0 | CorelDraw12 | Java | XML | asm x86 | Linux Mandrake | Linux RedHat | Outlook |  | news from newsgroups |_ | s

Web Templates

Awesome Website Templates ©

obciążenie Świętokrzyskie wupe Bielizna damska Drogo prowadź - Edyta Gepperd