Bugs item #1144263, was opened at 2005-02-19 09:20 Message generated for change (Comment added) made by mwh You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1144263&group_id=5470
Category: Python Interpreter Core Group: Python 2.4 Status: Open Resolution: None Priority: 5 Submitted By: Matthew G. Knepley (knepley) Assigned to: Nobody/Anonymous (nobody) Summary: reload() is broken for C extension objects Initial Comment: 1) A C extension module (foo.so) is imported import foo 2) The library foo.so is rebuilt with changes 3) We reload the module foo = reload(foo) The reload() method calls imp.load_dynamic() which eventually gets down to _PyImport_GetDynLoadFunc(). This just calls dlopen(), which returns the old filehandle. This problem can be fixed by augmenting imp with unload_dynamic(), which could easily be implemented in a _PyImport_GetDynUnloadFunc(), which would just consult its handles[] array, and call dlclose() on the appropriate handle. This will work if Python was the only program to dlopen() foo.so. ---------------------------------------------------------------------- >Comment By: Michael Hudson (mwh) Date: 2005-02-19 21:27 Message: Logged In: YES user_id=6656 I don't believe this is quite as easy as you make out. It might be possible to make something that works for platforms that use dlopen though... ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1144263&group_id=5470 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com