Hallo, kann es sein, dass die libc, libstdc++, ldd oder was auch immer von SuSE 8.0 mit C++ Ausnahmen Probleme haben? Ich habe ein Pythonmodul (shared library), das auf eine andere shared library zugreift. Ausnahmen, die von dieser Bibliothek kommen, fuehren zu einem abort. Hat jemand schon mal was aehnliches beobachtet? Ciao
Am Don, 14 Nov 2002 schrieb Sebastian Huber:
Hallo, kann es sein, dass die libc, libstdc++, ldd oder was auch immer von SuSE 8.0 mit C++ Ausnahmen Probleme haben? Ich habe ein Pythonmodul (shared library), das auf eine andere shared library zugreift. Ausnahmen, die von dieser Bibliothek kommen, fuehren zu einem abort. Hat jemand schon mal was aehnliches beobachtet?
Also beim ir klappen C++-Ausnahmen wie gewohnt... Gruß Christoph -- Christoph Maurer - 52072 Aachen - Tux#194235 mailto:christoph-maurer@gmx.de - http://www.christophmaurer.de Auf der Homepage u.a.: Installation von SuSE 7.0 auf Notebook Acer Travelmate 508 T, Elektrotechnik an der RWTH Aachen
Hi, On Thu, 14 Nov 2002, Sebastian Huber wrote:
kann es sein, dass die libc, libstdc++, ldd oder was auch immer von SuSE 8.0 mit C++ Ausnahmen Probleme haben? Ich habe ein Pythonmodul (shared library), das auf eine andere shared library zugreift.
Modul? Wird es also dynamisch nachgeladen? Und wenn ja wie? Mit RTLD_GLOBAL oder ohne?
Ausnahmen, die von dieser Bibliothek kommen, fuehren zu einem abort.
Wo werden (wo sollen) sie gefangen (werden)? In deinem Modul? In der Mainapplikation? I.e. wird die Exception ueber shared lib Grenzen hinweg geworfen? Wenn ja, und das Modul ohne RTLD_GLOBAL geladen wird, dann kann es in der Tat zerbrechen, und es gibt nix, was man dagegen tun koennte. Exception setzten einen globalen gemeinsamen Symbolraum vorraus, und ohne RTLD_GLOBAL ist der nicht gegeben.
Hat jemand schon mal was aehnliches beobachtet?
Ciao, Micha.
Michael Matz
On Thu, 14 Nov 2002, Sebastian Huber wrote:
mit C++ Ausnahmen Probleme haben? Ich habe ein Pythonmodul (shared library), das auf eine andere shared library zugreift.
Modul? Wird es also dynamisch nachgeladen? Und wenn ja wie? Mit RTLD_GLOBAL oder ohne?
Pythonmodule werden immer ohne RTLD_GLOBAL geladen, womit das Problem doppelter Symbole vermieden wird. Ergo dürften Exceptions nur innerhalb des Moduls funktionieren, oder? Philipp -- Philipp Thomas Arbeit: pthomas@suse.de Entwicklung, SuSE Linux AG Privat: pth@t-link.de
On Saturday 16 November 2002 21:55, Philipp Thomas wrote:
Michael Matz
[15 Nov 2002 18:59:13 +0100 (CET)]: On Thu, 14 Nov 2002, Sebastian Huber wrote:
mit C++ Ausnahmen Probleme haben? Ich habe ein Pythonmodul (shared library), das auf eine andere shared library zugreift.
Modul? Wird es also dynamisch nachgeladen? Und wenn ja wie? Mit RTLD_GLOBAL oder ohne?
Pythonmodule werden immer ohne RTLD_GLOBAL geladen, womit das Problem doppelter Symbole vermieden wird. Ergo dürften Exceptions nur innerhalb des Moduls funktionieren, oder?
Also wie gesagt, unter 7.3 funktioniert die Sache. So wie ich das sehe, laeuft das so ab. Der Pythoninterpreter laedt die Wrapperbibliothek und die ruft Funktionen auf, die in einer anderen Sharedlibrary liegen. Jedoch ist die Wrapperb. normal gegen die andere B. gelinkt, es wird also kein dlopen aufgerufen.
Sebastian Huber
Also wie gesagt, unter 7.3 funktioniert die Sache. So wie ich das sehe, laeuft das so ab. Der Pythoninterpreter laedt die Wrapperbibliothek und die ruft Funktionen auf, die in einer anderen Sharedlibrary liegen. Jedoch ist die Wrapperb. normal gegen die andere B. gelinkt, es wird also kein dlopen aufgerufen.
Alle Bibliotheken werden, soweit ich weiss, von Python explizit per dlopen geladen, wobei zusammengehörige Bibliotheken einen gemeinsamen Namensraum bekommen. Aber ich bin bei weitem kein Spezialist in diesen Sachen sondern habe nur meine Erfahrungen mit einer Bibliothek gemacht, die von einem Python-Programm geladen wurde und die ihrerseits Module per dlopen nachlud. Philipp -- Philipp Thomas Arbeit: pthomas@suse.de Entwicklung, SuSE Linux AG Privat: pth@t-link.de
participants (4)
-
Christoph Maurer
-
Michael Matz
-
Philipp Thomas
-
Sebastian Huber