Portál AbcLinuxu, 24. října 2025 12:08
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:
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 ()
if not self.dpy:
raise Exception('Cannot open display')
Tady jsem to neuváděl pro zkrácení zápisu.
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)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.