From: Barry S. <ba...@ba...> - 2023-12-13 11:10:34
|
I now have an old laptop with OpenBSD 7.4 installed. Was way harder then it should be to install this OS... I'll try and repro what you are seeing. My working guess is that the compile options broke C++ exception handing. Barry > On 11 Dec 2023, at 09:06, Matti Viljamaa <mav...@gm...> wrote: > > FYI, I am replicating the issue at po...@op... <mailto:po...@op...> mailing list to get different views: > > https://marc.info/?l=openbsd-ports&m=170227787921446&w=2 > > On Sat, Dec 9, 2023 at 2:45 PM Matti Viljamaa <mav...@gm... <mailto:mav...@gm...>> wrote: >> Maybe the following is helpful: >> >> (gdb) bt >> #0 thrkill () at /tmp/-:2 >> #1 0xf7a555255abd010d in ?? () >> #2 0x000000d3e7980c52 in _libc_abort () at /usr/src/lib/libc/stdlib/abort.c:51 >> #3 0x000000d4b9c3ce70 in uw_init_context_1 ( >> context=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, context@entry=0x794f944a9560, >> outer_cfa=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, outer_cfa@entry=0x794f944a9910, >> outer_ra=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/obj/ports/gcc-11.2.0/gcc-11.2.0/libgcc/unwind-pe.h:88 >> #4 0x000000d4b9c3c5d9 in _Unwind_RaiseException (exc=0xd3f70264c0) >> at /usr/obj/ports/gcc-11.2.0/gcc-11.2.0/libgcc/unwind.inc:93 >> #5 0x000000d4b9b25414 in __cxxabiv1::__cxa_throw (obj=<optimized out>, >> tinfo=0xd3f5aaa770 <typeinfo for Py::ValueError>, >> dest=0xd3f5a9a6e2 <Py::ValueError::~ValueError()>) >> at /usr/obj/ports/gcc-11.2.0/gcc-11.2.0/libstdc++-v3/libsupc++/eh_throw.cc:90 >> #6 0x000000d3f5a9a73d in Py::ValueError::throwFunc () >> at ./CXX/Python3/cxx_standard_exceptions.hxx:74 >> #7 0x000000d3f5a98426 in Py::ifPyErrorThrowCxxException () >> at Src/Python3/cxx_exceptions.cxx:41 >> #8 0x000000d3f5a80e1c in Py::Callable::apply (this=0x794f944a9a40, args=...) >> at ./CXX/Python3/Objects.hxx:3241 >> #9 0x000000d3f5a842c8 in simple_module::func_with_callback (this=0xd45b2ef460, >> args=...) at Demo/Python3/simple.cxx:351 >> #10 0x000000d3f5a8b513 in Py::ExtensionModule<simple_module>::invoke_method_keyword ( >> this=0xd45b2ef460, method_def=0xd410e7b420, args=..., keywords=...) >> at ./CXX/Python3/ExtensionModule.hxx:192 >> #11 0x000000d3f5a9524d in Py::method_keyword_call_handler (Python Exception <class 'gdb.error'> There is no member named ob_item.: >> _self_and_name_tuple=, Python Exception <class 'gdb.error'> There is no member named ob_item.: >> >> _args=, _keywords=0x0) at Src/Python3/cxx_extensions.cxx:1695 >> #12 0x000000d41f076d1c in cfunction_call () from /usr/local/lib/libpython3.10.so.0.0 >> #13 0x000000d41f01cc75 in _PyObject_MakeTpCall () >> from /usr/local/lib/libpython3.10.so.0.0 >> #14 0x000000d41f129e60 in call_function () from /usr/local/lib/libpython3.10.so.0.0 >> #15 0x000000d41f1206c0 in _PyEval_EvalFrameDefault () >> from /usr/local/lib/libpython3.10.so.0.0 >> #16 0x000000d41f11d4e4 in _PyEval_Vector () from /usr/local/lib/libpython3.10.so.0.0 >> #17 0x000000d41f185527 in run_mod () from /usr/local/lib/libpython3.10.so.0.0 >> #18 0x000000d41f185e0c in PyRun_InteractiveOneObjectEx () >> from /usr/local/lib/libpython3.10.so.0.0 >> #19 0x000000d41f1848be in _PyRun_InteractiveLoopObject () >> from /usr/local/lib/libpython3.10.so.0.0 >> #20 0x000000d41f183dfb in _PyRun_AnyFileObject () >> from /usr/local/lib/libpython3.10.so.0.0 >> #21 0x000000d41f187d2d in PyRun_AnyFileExFlags () >> from /usr/local/lib/libpython3.10.so.0.0 >> #22 0x000000d41f1ac960 in Py_RunMain () from /usr/local/lib/libpython3.10.so.0.0 >> #23 0x000000d41f1adc33 in pymain_main () from /usr/local/lib/libpython3.10.so.0.0 >> #24 0x000000d41f1ae02c in Py_BytesMain () from /usr/local/lib/libpython3.10.so.0.0 >> #25 0x000000d1cd9a4971 in _start () >> >> On Sat, Dec 9, 2023 at 2:35 PM Matti Viljamaa <mav...@gm... <mailto:mav...@gm...>> wrote: >>> PYTHONPATH=obj egdb python3 >>> GNU gdb (GDB) 9.2 >>> Copyright (C) 2020 Free Software Foundation, Inc. >>> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> >>> This is free software: you are free to change and redistribute it. >>> There is NO WARRANTY, to the extent permitted by law. >>> Type "show copying" and "show warranty" for details. >>> This GDB was configured as "x86_64-unknown-openbsd7.4". >>> Type "show configuration" for configuration details. >>> For bug reporting instructions, please see: >>> <http://www.gnu.org/software/gdb/bugs/>. >>> Find the GDB manual and other documentation resources online at: >>> <http://www.gnu.org/software/gdb/documentation/>. >>> >>> For help, type "help". >>> Type "apropos word" to search for commands related to "word"... >>> Reading symbols from python3... >>> (No debugging symbols found in python3) >>> (gdb) import simple >>> Undefined command: "import". Try "help". >>> (gdb) run >>> Starting program: /usr/local/bin/python3 >>> Python 3.10.13 (main, Dec 5 2023, 18:39:12) [Clang 16.0.6 ] on openbsd7 >>> Type "help", "copyright", "credits" or "license" for more information. >>> >>> import simple >>> warning: File "/usr/local/lib/libestdc++.so.20.0-gdb.py <http://so.20.0-gdb.py/>" auto-loading has been declined by your `auto-load safe-path' set to "/usr/local/share/gdb/auto-load". >>> To enable execution of this file add >>> add-auto-load-safe-path /usr/local/lib/libestdc++.so.20.0-gdb.py <http://so.20.0-gdb.py/> >>> line to your configuration file "/root/.gdbinit". >>> To completely disable this security protection add >>> set auto-load safe-path / >>> line to your configuration file "/root/.gdbinit". >>> For more information about this security protection see the >>> "Auto-loading safe path" section in the GDB manual. E.g., run from the shell: >>> info "(gdb)Auto-loading safe path" >>> sizeof(int) 4 >>> sizeof(long) 8 >>> sizeof(Py_hash_t) 8 >>> sizeof(Py_ssize_t) 8 >>> >>> def callback_bad( arg ): >>> ... raise ValueError( 'callback_bad error' ) >>> ... >>> >>> simple.func_with_callback( callback_bad, 'fred' ) >>> >>> Program received signal SIGABRT, Aborted. >>> thrkill () at /tmp/-:2 >>> 2 /tmp/-: No such file or directory. >>> (gdb) Quit >>> (gdb) >>> >>> --- >>> >>> Now what? >>> >>> >>> On Tue, Dec 5, 2023 at 1:46 PM Barry Scott <ba...@ba... <mailto:ba...@ba...>> wrote: >>>> >>>> >>>> On 29/11/2023 13:02, Matti Viljamaa wrote: >>>>> On a closer inspection it seems related to the line: >>>>> >>>>> simple.func_with_callback( callback_bad, 'fred' ) >>>>> >>>>> because replacing that with a direct call: >>>>> >>>>> call_back('fred') >>>>> >>>>> works as expected: >>>>> >>>>> ... >>>>> TEST: call C++ with Python callback_good >>>>> callback_good with 'callback_args string' >>>>> PASS callback_good returned 'good result' >>>>> TEST: call C++ with Python callback_bad >>>>> callback_bad with 'fred' >>>>> PASS callback_bad: error callback_bad error >>>>> TEST: call C++ with Python callback_raise_simple_error >>>>> callback_bad with 'callback_args string' >>>>> Abort trap (core dumped) >>>>> >>>>> Is there some problem with raising exceptions with the simple.func_with_callback? >>>>> >>>>> However, I also think there might be a problem with: >>>>> >>>>> TEST: call C++ with Python callback_good >>>>> callback_good with 'callback_args string' >>>>> PASS callback_good returned 'good result' >>>>> >>>>> because I think it shouldn't show 'callback_args string' >>>>> >>>>> On Wed, Nov 29, 2023 at 1:15 PM Matti Viljamaa <mav...@gm... <mailto:mav...@gm...>> wrote: >>>>>> I am attempting to build pycxx-7.1.8 for OpenBSD 7.4-current. >>>>>> >>>>>> I am following the Unix installation guide at: >>>>>> >>>>>> https://cxx.sourceforge.net/ >>>>>> >>>>>> The final line: >>>>>> >>>>>> make -f linux.mak clean test >>>>>> >>>>>> or >>>>>> >>>>>> gmake -f linux.mak clean test >>>>>> >>>>>> in OpenBSD >>>>>> >>>>>> fails to >>>>>> >>>>>> ... >>>>>> TEST: call C++ with Python callback_bad >>>>>> callback_bad with 'callback_args string' >>>>>> Abort trap (core dumped) >>>>>> gmake: *** [linux.mak:86: test] Error 134 >>>>>> >>>>>> Upon inspecting test_simple.py I've noticed that it seems to be linked to raising ValueError, because commenting out line 31: >>>>>> >>>>>> raise ValueError( 'callback_bad error' ) >>>>>> >>>>>> in test_simple.py makes test_simple.py progress to the next test. Now I see: >>>>>> >>>>>> ... >>>>>> TEST: call C++ with Python callback_bad >>>>>> callback_bad with 'callback_args string' >>>>>> FAILED callback_bad None >>>>>> TEST: call C++ with Python callback_raise_simple_error >>>>>> callback_bad with 'callback_args string' >>>>>> Abort trap (core dumped) >>>>>> >>>>>> However, since the Abort traps continue showing, I speculate that this is about something more. Possible reasons: >>>>>> >>>>>> * pycxx-7.1.8 is not compatible with Python 3.10 (or a particular subversion) >>>>>> * something is different in OpenBSD compared to Linux >>>>>> >>>>>> Any ideas? >>>> This is how to run the failing test on its own to debug it: >>>> : 11:44:26 worthy ~/Projects/pycxx-trunk >>>> : [1] barry $ PYTHONPATH=obj gdb python3.10 >>>> GNU gdb (Fedora Linux) 13.2-11.fc39 >>>> Copyright (C) 2023 Free Software Foundation, Inc. >>>> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> <http://gnu.org/licenses/gpl.html> >>>> This is free software: you are free to change and redistribute it. >>>> There is NO WARRANTY, to the extent permitted by law. >>>> Type "show copying" and "show warranty" for details. >>>> This GDB was configured as "x86_64-redhat-linux-gnu". >>>> Type "show configuration" for configuration details. >>>> For bug reporting instructions, please see: >>>> <https://www.gnu.org/software/gdb/bugs/> <https://www.gnu.org/software/gdb/bugs/>. >>>> Find the GDB manual and other documentation resources online at: >>>> <http://www.gnu.org/software/gdb/documentation/> <http://www.gnu.org/software/gdb/documentation/>. >>>> >>>> For help, type "help". >>>> Type "apropos word" to search for commands related to "word"... >>>> Reading symbols from python3.10... >>>> Reading symbols from /home/barry/.cache/debuginfod_client/5ba318aef33a2277a4c3e2fef48addf050553288/debuginfo... >>>> (gdb) import simple >>>> Undefined command: "import". Try "help". >>>> (gdb) run >>>> Starting program: /usr/bin/python3.10 >>>> [Thread debugging using libthread_db enabled] >>>> Using host libthread_db library "/lib64/libthread_db.so.1". >>>> Python 3.10.13 (main, Aug 28 2023, 00:00:00) [GCC 13.2.1 20230728 (Red Hat 13.2.1-1)] on linux >>>> Type "help", "copyright", "credits" or "license" for more information. >>>> >>> import simple >>>> sizeof(int) 4 >>>> sizeof(long) 8 >>>> sizeof(Py_hash_t) 8 >>>> sizeof(Py_ssize_t) 8 >>>> >>> def callback_bad( arg ): >>>> ... raise ValueError( 'callback_bad error' ) >>>> ... >>>> >>> simple.func_with_callback( callback_bad, 'fred' ) >>>> Traceback (most recent call last): >>>> File "<stdin>", line 1, in <module> >>>> File "<stdin>", line 2, in callback_bad >>>> ValueError: callback_bad error >>>> >>> >>>> >>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> CXX-Users mailing list >>>>> CXX...@li... <mailto:CXX...@li...> >>>>> https://lists.sourceforge.net/lists/listinfo/cxx-users >>>> _______________________________________________ >>>> CXX-Users mailing list >>>> CXX...@li... <mailto:CXX...@li...> >>>> https://lists.sourceforge.net/lists/listinfo/cxx-users > _______________________________________________ > CXX-Users mailing list > CXX...@li... > https://lists.sourceforge.net/lists/listinfo/cxx-users |