Dear Maintainer,
this can be reproduced in current Bookworm/testing too.
The backtrace below shows PyBytes_FromString received for
parameter str a NULL, which documentation states must not be NULL [1].
Unfortunately could not find an issue or update in upstream page [2].
Kind regards,
Bernhard
[1] https://docs.python.org/3/c-api/bytes.html
[2] https://github.com/facebookincubator/pystemd
$ cat test.py
from pystemd.dbuslib import DBus
bus=DBus(user_mode=True)
bus.get_unique_name()
$
$ python3 test.py
pystemd.dbusexc.DBusBaseError: [err -22]: Failed to get unique name
This is DBusBaseError, a base error for DBus (i bet you did not see that coming) if you need a special error, enhance pystemd.sysdexc module!.
Exception ignored in: 'pystemd.dbuslib.DBus.get_unique_name'
Traceback (most recent call last):
File "/home/benutzer/test.py", line 3, in <module>
bus.get_unique_name()
pystemd.dbusexc.DBusBaseError: [err -22]: Failed to get unique name
This is DBusBaseError, a base error for DBus (i bet you did not see that coming) if you need a special error, enhance pystemd.sysdexc module!.
Speicherzugriffsfehler (Speicherabzug geschrieben)
$
# coredumpctl gdb 1246
(gdb) bt
#0 __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:76
#1 0x000000000059f40c in PyBytes_FromString (str=0x0) at ../Objects/bytesobject.c:153
#2 0x00007f360fb7b6a6 in __pyx_pf_7pystemd_7dbuslib_4DBus_20get_unique_name (__pyx_v_self=<optimized out>) at pystemd/dbuslib.c:10541
#3 __pyx_pw_7pystemd_7dbuslib_4DBus_21get_unique_name (__pyx_v_self=<optimized out>, unused=<optimized out>) at pystemd/dbuslib.c:10525
#4 0x000000000055a850 in method_vectorcall_NOARGS (func=<method_descriptor at remote 0x7f360fbc3ba0>, args=0x7f3610512070, nargsf=<optimized out>, kwnames=0x0) at ../Objects/descrobject.c:453
#5 0x000000000053983c in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<method_descriptor at remote 0x7f360fbc3ba0>, tstate=0xa85258 <_PyRuntime+166328>) at ../Include/internal/pycore_call.h:92
#6 PyObject_Vectorcall (callable=<method_descriptor at remote 0x7f360fbc3ba0>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:299
...
(gdb) py-bt
Traceback (most recent call first):
File "/home/benutzer/test.py", line 3, in <module>
bus.get_unique_name()
(gdb)
$ cat -n pystemd/dbuslib.c | grep 10541 -C10
10531
10532 static PyObject *__pyx_pf_7pystemd_7dbuslib_4DBus_20get_unique_name(struct __pyx_obj_7pystemd_7dbuslib_DBus *__pyx_v_self) {
10533 PyObject *__pyx_r = NULL;
10534 __Pyx_RefNannyDeclarations
10535 PyObject *__pyx_t_1 = NULL;
10536 int __pyx_lineno = 0;
10537 const char *__pyx_filename = NULL;
10538 int __pyx_clineno = 0;
10539 __Pyx_RefNannySetupContext("get_unique_name", 0);
10540 __Pyx_XDECREF(__pyx_r);
10541 __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_f_7pystemd_7dbuslib_4DBus_get_unique_name(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error)
10542 __Pyx_GOTREF(__pyx_t_1);
10543 __pyx_r = __pyx_t_1;
10544 __pyx_t_1 = 0;
10545 goto __pyx_L0;
10546
10547 /* function exit code */
...
$
$ cat -n pystemd/dbuslib.pyx | grep 536 -C10
526 cpdef const char* get_unique_name(self):
527 cdef:
528 int r
529 const char *unique_name
530
531 r = dbusc.sd_bus_get_unique_name(self.bus, &unique_name)
532
533 if r < 0:
534 raise DBusError(r, None, "Failed to get unique name")
535
536 return unique_name
537
538 cpdef int get_fd(self):
...
$