Portál AbcLinuxu, 8. května 2025 00:30

Dotaz: Python XDefaultRootWindow SIGSEGV

11.4.2018 09:00 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Python XDefaultRootWindow SIGSEGV
Přečteno: 203×
Odpovědět | Admin
V Pythoně mám tento kousek kódu:
self.xlib = ctypes.cdll.LoadLibrary('libX11.so');
self.dpy = self.xlib.XOpenDisplay();
self.root = self.xlib.XDefaultRootWindow(self.dpy)
a právě na tom XDefaultRootWindow mi to hlásí:
Neoprávněný přístup do paměti (SIGSEGV)
Ve dřívějších verzích pythonu před cca půl roku mi to přitom fungovalo normálně. Nevíce prosím v čem je problém?

Předem děkuji za odpověď

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.4.2018 09:07 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: Python XDefaultRootWindow SIGSEGV
Odpovědět | | Sbalit | Link | Blokovat | Admin
Backtrace je:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4f18a5c in XOpenDisplay () from /usr/lib64/libX11.so
(gdb) bt
#0  0x00007ffff4f18a5c in XOpenDisplay () from /usr/lib64/libX11.so
#1  0x00007ffff6532d28 in ffi_call_unix64 () from /usr/lib64/libffi.so.6
#2  0x00007ffff6532814 in ffi_call () from /usr/lib64/libffi.so.6
#3  0x00007ffff6745eef in _ctypes_callproc () from /usr/lib64/python2.7/lib-dynload/_ctypes.so
#4  0x00007ffff673f9d2 in ?? () from /usr/lib64/python2.7/lib-dynload/_ctypes.so
#5  0x00007ffff7a44f73 in PyObject_Call () from /usr/lib64/libpython2.7.so.1.0
#6  0x00007ffff7ade478 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.7.so.1.0
#7  0x00007ffff7ae283c in PyEval_EvalCodeEx () from /usr/lib64/libpython2.7.so.1.0
#8  0x00007ffff7a6ad5c in ?? () from /usr/lib64/libpython2.7.so.1.0
#9  0x00007ffff7a44f73 in PyObject_Call () from /usr/lib64/libpython2.7.so.1.0
#10 0x00007ffff7a53f5c in ?? () from /usr/lib64/libpython2.7.so.1.0
#11 0x00007ffff7a44f73 in PyObject_Call () from /usr/lib64/libpython2.7.so.1.0
#12 0x00007ffff7ad8917 in PyEval_CallObjectWithKeywords () from /usr/lib64/libpython2.7.so.1.0
#13 0x00007ffff7a54c80 in PyInstance_New () from /usr/lib64/libpython2.7.so.1.0
#14 0x00007ffff7a44f73 in PyObject_Call () from /usr/lib64/libpython2.7.so.1.0
#15 0x00007ffff7ade478 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.7.so.1.0
#16 0x00007ffff7ae283c in PyEval_EvalCodeEx () from /usr/lib64/libpython2.7.so.1.0
#17 0x00007ffff7ae2929 in PyEval_EvalCode () from /usr/lib64/libpython2.7.so.1.0
#18 0x00007ffff7afbe4f in ?? () from /usr/lib64/libpython2.7.so.1.0
#19 0x00007ffff7afd092 in PyRun_FileExFlags () from /usr/lib64/libpython2.7.so.1.0
#20 0x00007ffff7afe2a5 in PyRun_SimpleFileExFlags () from /usr/lib64/libpython2.7.so.1.0
#21 0x00007ffff7b10100 in Py_Main () from /usr/lib64/libpython2.7.so.1.0
#22 0x00007ffff744a541 in __libc_start_main () from /lib64/libc.so.6
#23 0x00005555555547ca in _start ()

11.4.2018 09:11 pc2005
Rozbalit Rozbalit vše Re: Python XDefaultRootWindow SIGSEGV
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co tohle?
11.4.2018 09:26 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: Python XDefaultRootWindow SIGSEGV
Zkusil jsem a nepomaha to. Navic to pada i pod python2. Zkouším i ten testovací program z přívěvků a obojí padá jak pod Gentoo, tak i pod Ubuntu ;(
11.4.2018 10:47 pc2005
Rozbalit Rozbalit vše Re: Python XDefaultRootWindow SIGSEGV
Provede se vůbec úspěšně XOpenDisplay?
11.4.2018 10:57 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: Python XDefaultRootWindow SIGSEGV
Vrátí mi to nějaké číslo jako 633166624. V kódu mám
if not self.dpy:
                        raise Exception('Cannot open display')

Tady jsem to neuváděl pro zkrácení zápisu.
Řešení 1× (filbar (tazatel))
michich avatar 11.4.2018 13:12 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Python XDefaultRootWindow SIGSEGV
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takhle mi to funguje:
import ctypes

display_p = ctypes.c_void_p
xid = ctypes.c_ulong

xlib = ctypes.cdll.LoadLibrary('libX11.so')

xlib.XOpenDisplay.restype = display_p
xlib.XOpenDisplay.argtypes = ctypes.c_char_p,
xlib.XDefaultRootWindow.restype = xid
xlib.XDefaultRootWindow.argtypes = display_p,

dpy = xlib.XOpenDisplay(None)
print(dpy)
root = xlib.XDefaultRootWindow(dpy)
print(root)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.