Dear Maintainer, hello Gonçalo, I tried to have a look at this issue, and could reproduce it in a jessie and buster amd64 qemu VM.
As far as I see xcircuit tries to draw all files into one big pixmap. (gdb) list filelist.c:480 477 pixheight = flfiles * FILECHARHEIGHT + 25; 478 if (pixheight < textheight) pixheight = textheight; 479 480 flistpix = XCreatePixmap(dpy, areawin->window, textwidth, pixheight, 481 DefaultDepthOfScreen(xcScreen(w))); (gdb) print pixheight $1 = 42039 (gdb) print textheight $2 = 98 (gdb) print flfiles $3 = 3001 Unfortunately, depending on the font size, we get then a height of e.g. 42039, that is not allowed in the xserver: (gdb) list ProcCreatePixmap 1392 int 1393 ProcCreatePixmap(ClientPtr client) ... 1415 if (stuff->width > 32767 || stuff->height > 32767) { 1416 /* It is allowed to try and allocate a pixmap which is larger than 1417 * 32767 in either dimension. However, all of the framebuffer code 1418 * is buggy and does not reliably draw to such big pixmaps, basically 1419 * because the Region data structure operates with signed shorts 1420 * for the rectangles in it. 1421 * 1422 * Furthermore, several places in the X server computes the 1423 * size in bytes of the pixmap and tries to store it in an 1424 * integer. This integer can overflow and cause the allocated size 1425 * to be much smaller. 1426 * 1427 * So, such big pixmaps are rejected here with a BadAlloc 1428 */ 1429 return BadAlloc; 1430 } So a check like in filelist.c:478 could be added to limit pixheight to 32767, or give a error message like in the "(Invalid Directory)" case. Kind regards, Bernhard Client: (gdb) bt #0 XCreatePixmap (dpy=0x561a0f1f4f60, d=8389047, width=339, height=42039, depth=24) at ../../src/CrPixmap.c:50 #1 0x00007f67bfa7d020 in listfiles (w=0x561a0f846e00, okaystruct=0x561a0fa27f60, calldata=0x0) at filelist.c:480 #2 0x00007f67bfa7d51a in newfilelist (w=0x561a0f846e00, okaystruct=0x561a0fa27f60) at filelist.c:547 #3 0x00007f67bfafaec2 in xctk_fileselect (clientData=0x561a0fa27f60, eventPtr=0x7ffff0ef86f0) at tclxcircuit.c:9567 #4 0x00007f67c19c7ff5 in Tk_HandleEvent (eventPtr=eventPtr@entry=0x7ffff0ef86f0) at ./unix/../generic/tkEvent.c:1352 #5 0x00007f67c19bb3b0 in HandleEventGenerate (interp=interp@entry=0x561a0f46b6f0, mainWin=mainWin@entry=0x561a0f624180, objc=objc@entry=4, objv=objv@entry=0x561a0f486840) at ./unix/../generic/tkBind.c:3458 #6 0x00007f67c19baaf1 in Tk_EventObjCmd (clientData=0x561a0f624180, interp=0x561a0f46b6f0, objc=6, objv=0x561a0f486830) at ./unix/../generic/tkBind.c:2413 #7 0x00007f67c1608a96 in TclNRRunCallbacks (interp=interp@entry=0x561a0f46b6f0, result=0, rootPtr=0x0) at ./generic/tclBasic.c:4435 #8 0x00007f67c1607ecf in Tcl_EvalObjv (interp=interp@entry=0x561a0f46b6f0, objc=objc@entry=6, objv=objv@entry=0x561a0f486830, flags=flags@entry=2097168) at ./generic/tclBasic.c:4165 #9 0x00007f67c160964a in TclEvalEx (interp=0x561a0f46b6f0, script=0x7ffff0ef8af0 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2", numBytes=<optimized out>, flags=<optimized out>, line=line@entry=1, clNextOuter=clNextOuter@entry=0x0, outerScript=0x7ffff0ef8af0 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2") at ./generic/tclBasic.c:5304 #10 0x00007f67c16090f3 in Tcl_EvalEx (interp=<optimized out>, script=<optimized out>, numBytes=<optimized out>, flags=<optimized out>) at ./generic/tclBasic.c:4969 #11 0x00007f67c19b9705 in Tk_BindEvent (bindPtr=<optimized out>, eventPtr=eventPtr@entry=0x561a0f9f3aa0, tkwin=tkwin@entry=0x561a0f84c020, numObjects=<optimized out>, numObjects@entry=4, objectPtr=<optimized out>, objectPtr@entry=0x7ffff0ef8d20) at ./unix/../generic/tkBind.c:1505 #12 0x00007f67c19bff4d in TkBindEventProc (winPtr=winPtr@entry=0x561a0f84c020, eventPtr=eventPtr@entry=0x561a0f9f3aa0) at ./unix/../generic/tkCmds.c:319 #13 0x00007f67c19c8173 in Tk_HandleEvent (eventPtr=eventPtr@entry=0x561a0f9f3aa0) at ./unix/../generic/tkEvent.c:1374 #14 0x00007f67c19c8920 in WindowEventProc (evPtr=evPtr@entry=0x561a0f9f3a90, flags=flags@entry=-3) at ./unix/../generic/tkEvent.c:1764 #15 0x00007f67c16d0e17 in Tcl_ServiceEvent (flags=flags@entry=-3) at ./generic/tclNotify.c:670 #16 0x00007f67c16d1066 in Tcl_DoOneEvent (flags=-3) at ./generic/tclNotify.c:903 #17 0x00007f67c19c8d72 in Tk_MainLoop () at ./unix/../generic/tkEvent.c:2148 #18 0x00007f67c19d741a in Tk_MainEx (argc=<optimized out>, argv=<optimized out>, appInitProc=0x561a0d485b30, interp=0x561a0f195f00) at ./unix/../generic/tkMain.c:390 #19 0x0000561a0d485a0c in ?? () #20 0x00007f67c07e7b17 in __libc_start_main (main=0x561a0d4859e0, argc=6, argv=0x7ffff0ef92a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffff0ef9298) at ../csu/libc-start.c:310 #21 0x0000561a0d485a4a in _start () XServer: (gdb) bt #0 ProcCreatePixmap (client=0x5599b8dce330) at ../../../../dix/dispatch.c:1415 #1 0x00005599b7d2698e in Dispatch () at ../../../../dix/dispatch.c:478 #2 0x00005599b7d2a936 in dix_main (argc=10, argv=0x7fffb806f7e8, envp=<optimized out>) at ../../../../dix/main.c:276 #3 0x00007fc906b67b17 in __libc_start_main (main=0x5599b7d14650 <main>, argc=10, argv=0x7fffb806f7e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffb806f7d8) at ../csu/libc-start.c:310 #4 0x00005599b7d1468a in _start ()
# current jessie amd64 apt update apt dist-upgrade apt install dpkg-dev devscripts xserver-xorg lightdm openbox htop xcircuit wish libx11-6-dbg libtk8.6-dbg libtcl8.6-dbg systemctl start lightdm mkdir libx11-6/orig -p cd libx11-6/orig apt-get source libx11-6 cd ../.. ############ export LANG=C export DISPLAY=:0 xcircuit 1. Open xcircuit 2. File -> Read XCircuit File (the "File List Window" screen will open) 3. Write in the text box "/usr/share/doc" 4. Press return ---> no crash ############ root@debian:~# ls /usr/share/doc | wc -l 658 root@debian:~# for i in {1..6000}; do mkdir /usr/share/doc/tmp-$i; done root@debian:~# ls /usr/share/doc | wc -l 6658 1. Open xcircuit 2. File -> Read XCircuit File (the "File List Window" screen will open) 3. Write in the text box "/usr/share/doc" 4. Press return ---> no crash ############## root@debian:~# for i in {1..6000}; do mkdir /usr/share/doc/tmp-2-$i; done root@debian:~# ls /usr/share/doc | wc -l 12658 benutzer@debian:~$ free -h total used free shared buffers cached Mem: 2.9G 844M 2.1G 7.9M 113M 558M -/+ buffers/cache: 172M 2.8G Swap: 879M 0B 879M 1. Open xcircuit 2. File -> Read XCircuit File (the "File List Window" screen will open) 3. Write in the text box "/usr/share/doc" 4. Press return 5. xcircuit crashes with the following output benutzer@debian:~$ xcircuit X Error of failed request: BadAlloc (insufficient resources for operation) Major opcode of failed request: 53 (X_CreatePixmap) Serial number of failed request: 6017 Current serial number in output stream: 8195 ############## benutzer@debian:~$ xcircuit & [1] 30992 benutzer@debian:~$ gdb -q --pid 30992 (gdb) set width 0 (gdb) set pagination off (gdb) directory /home/benutzer/libx11-6/orig/libx11-1.6.2/src/util (gdb) b XGetErrorText (gdb) cont Breakpoint 1, XGetErrorText (dpy=0x7ffcbbeccf80, code=-1142116480, buffer=0x7f4ce3013060 <_IO_2_1_stderr_> "\206 \255", <incomplete sequence \373>, nbytes=-1142099984) at ../../src/ErrDes.c:105 105 { (gdb) bt #0 XGetErrorText (dpy=0x7ffcbbeccf80, code=-1142116480, buffer=0x7f4ce3013060 <_IO_2_1_stderr_> "\206 \255", <incomplete sequence \373>, nbytes=-1142099984) at ../../src/ErrDes.c:105 #1 0x00007f4ce3b90c8b in _XPrintDefaultError (dpy=0x17395f0, event=0x7ffcbbeceff0, fp=0x7f4ce3013060 <_IO_2_1_stderr_>) at ../../src/XlibInt.c:1308 #2 0x00007f4ce3b924c3 in _XDefaultError (dpy=<optimized out>, event=<optimized out>) at ../../src/XlibInt.c:1413 #3 0x00007f4ce3b9260d in _XError (dpy=dpy@entry=0x17395f0, rep=rep@entry=0x192c030) at ../../src/XlibInt.c:1463 #4 0x00007f4ce3b8f567 in handle_error (dpy=0x17395f0, err=0x192c030, in_XReply=<optimized out>) at ../../src/xcb_io.c:213 #5 0x00007f4ce3b8f625 in handle_response (dpy=dpy@entry=0x17395f0, response=0x192c030, in_XReply=in_XReply@entry=0) at ../../src/xcb_io.c:325 #6 0x00007f4ce3b8ffd5 in _XEventsQueued (dpy=0x17395f0, mode=<optimized out>) at ../../src/xcb_io.c:364 #7 0x00007f4ce3b8c718 in XDrawString (dpy=0x17395f0, d=8389724, gc=<optimized out>, x=10, y=37598, string=0x1fe8a90 "tmp-2-1772/", length=11) at ../../src/Text.c:71 #8 0x00007f4ce074c722 in ?? () from /usr/lib/xcircuit/xcircuit.so #9 0x00007f4ce074c9ba in ?? () from /usr/lib/xcircuit/xcircuit.so #10 0x00007f4ce07c805e in ?? () from /usr/lib/xcircuit/xcircuit.so #11 0x00007f4ce4ba88d5 in Tk_HandleEvent (eventPtr=0x7ffcbbecf5b0) at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkEvent.c:1341 #12 0x00007f4ce4b9c2fd in HandleEventGenerate (interp=0x19d3060, mainWin=0x1b39fb0, objc=4, objv=0x1e680a0) at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkBind.c:3439 #13 0x00007f4ce4b9b003 in Tk_EventObjCmd (clientData=0x1b39fb0, interp=0x19d3060, objc=6, objv=0x19d4b50) at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkBind.c:2394 #14 0x00007f4ce47eca87 in TclNRRunCallbacks (interp=0x19d3060, result=0, rootPtr=0x0) at /tmp/buildd/tcl8.6-8.6.2+dfsg/generic/tclBasic.c:4390 #15 0x00007f4ce47ed7bb in TclEvalEx (interp=0x17395f0, script=0xb <error: Cannot access memory at address 0xb>, numBytes=-1142116480, flags=27085552, line=1, clNextOuter=clNextOuter@entry=0x0, outerScript=0x7ffcbbecf9b0 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2") at /tmp/buildd/tcl8.6-8.6.2+dfsg/generic/tclBasic.c:5259 #16 0x00007f4ce47ed093 in Tcl_EvalEx (interp=<optimized out>, script=<optimized out>, numBytes=<optimized out>, flags=<optimized out>) at /tmp/buildd/tcl8.6-8.6.2+dfsg/generic/tclBasic.c:4924 #17 0x00007f4ce4b99ded in Tk_BindEvent (bindPtr=<optimized out>, eventPtr=eventPtr@entry=0x1cb2b00, tkwin=tkwin@entry=0x1ca07c0, numObjects=<optimized out>, numObjects@entry=4, objectPtr=0x191d740, objectPtr@entry=0x7ffcbbecfbe0) at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkBind.c:1492 #18 0x00007f4ce4ba05a9 in TkBindEventProc (winPtr=winPtr@entry=0x1ca07c0, eventPtr=eventPtr@entry=0x1cb2b00) at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkCmds.c:316 #19 0x00007f4ce4ba8b0b in Tk_HandleEvent (eventPtr=eventPtr@entry=0x1cb2b00) at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkEvent.c:1363 #20 0x00007f4ce4ba90f4 in WindowEventProc (evPtr=evPtr@entry=0x1cb2af0, flags=flags@entry=-3) at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkEvent.c:1753 #21 0x00007f4ce48b2fef in Tcl_ServiceEvent (flags=flags@entry=-3) at /tmp/buildd/tcl8.6-8.6.2+dfsg/generic/tclNotify.c:670 #22 0x00007f4ce48b3225 in Tcl_DoOneEvent (flags=-3) at /tmp/buildd/tcl8.6-8.6.2+dfsg/generic/tclNotify.c:903 #23 0x00007f4ce4ba9582 in Tk_MainLoop () at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkEvent.c:2131 #24 0x00007f4ce4bb7de6 in Tk_MainEx (argc=<optimized out>, argv=0x7ffcbbed0198, appInitProc=0x400b10 <_start+251>, interp=0x16e1d70) at /tmp/buildd/tk8.6-8.6.2/unix/../generic/tkMain.c:381 #25 0x0000000000400a0c in ?? () #26 0x00007f4ce2c8eb45 in __libc_start_main (main=0x4009e0, argc=6, argv=0x7ffcbbed0168, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffcbbed0158) at libc-start.c:287 #27 0x0000000000400a3e in _start () ################# # current buster amd64, 512 RAM, no swap root@debian:~# free -h total used free shared buff/cache available Mem: 483Mi 63Mi 147Mi 1,0Mi 273Mi 407Mi Swap: 0B 0B 0B apt update apt dist-upgrade apt install dpkg-dev devscripts xserver-xorg lightdm openbox htop mc gdb xcircuit xcircuit-dbgsym libx11-6-dbgsym libtk8.6-dbgsym libtcl8.6-dbgsym xserver-xorg-core-dbgsym asciidoc systemctl start lightdm mkdir libx11-6/orig -p cd libx11-6/orig apt-get source libx11-6 cd ../.. mkdir xcircuit/orig -p cd xcircuit/orig apt-get source xcircuit cd ../.. mkdir xserver-xorg-core/orig -p cd xserver-xorg-core/orig apt source xserver-xorg-core cd ../.. root@debian:~# mkdir /test root@debian:~# for i in {1..3000}; do mkdir /test/tmp-$i; done root@debian:~# ls /test | wc -l 3000 benutzer@debian:~$ export LANG=C benutzer@debian:~$ export DISPLAY=:0 benutzer@debian:~$ xcircuit & [1] 24543 benutzer@debian:~$ gdb -q --pid 24543 Attaching to process 24543 [New LWP 24544] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007feef8f0122a in futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffa14204e0, expected=0, futex_word=0x563ab6dc4c34) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 205 ../sysdeps/unix/sysv/linux/futex-internal.h: Datei oder Verzeichnis nicht gefunden. (gdb) set width 0 (gdb) set pagination off (gdb) directory /home/benutzer/libx11-6/orig/libx11-1.6.7/src/util Source directories searched: /home/benutzer/libx11-6/orig/libx11-1.6.7/src/util:$cdir:$cwd (gdb) b XGetErrorText Breakpoint 1 at 0x7feef88c3200: file ../../src/ErrDes.c, line 105. (gdb) cont (gdb) bt #0 XGetErrorText (dpy=dpy@entry=0x563ab6e2df60, code=11, buffer=buffer@entry=0x7fffa141c340 "\234\001\256\004:V", nbytes=nbytes@entry=8192) at ../../src/ErrDes.c:105 #1 0x00007feef88e379b in _XPrintDefaultError (dpy=dpy@entry=0x563ab6e2df60, event=0x7fffa14203a0, fp=0x7feef82ca680 <_IO_2_1_stderr_>) at ../../src/XlibInt.c:1279 #2 0x00007feef88e4fc3 in _XDefaultError (dpy=0x563ab6e2df60, event=<optimized out>) at ../../src/XlibInt.c:1384 #3 0x00007feef88e511a in _XError (dpy=dpy@entry=0x563ab6e2df60, rep=rep@entry=0x563ab7661620) at ../../src/XlibInt.c:1444 #4 0x00007feef88e2077 in handle_error (dpy=0x563ab6e2df60, err=0x563ab7661620, in_XReply=<optimized out>) at ../../src/xcb_io.c:199 #5 0x00007feef88e211d in handle_response (dpy=dpy@entry=0x563ab6e2df60, response=0x563ab7661620, in_XReply=in_XReply@entry=0) at ../../src/xcb_io.c:324 #6 0x00007feef88e2a55 in _XEventsQueued (dpy=0x563ab6e2df60, mode=<optimized out>) at ../../src/xcb_io.c:363 #7 0x00007feef88c45ea in XFlush (dpy=0x563ab6e2df60) at ../../src/Flush.c:39 #8 0x00007feef93c3918 in DisplaySetupProc (clientData=<optimized out>, flags=<optimized out>) at ./unix/../unix/tkUnixEvent.c:307 #9 0x00007feef901e0c0 in Tcl_DoOneEvent (flags=-3) at ./generic/tclNotify.c:930 #10 0x00007feef9315d72 in Tk_MainLoop () at ./unix/../generic/tkEvent.c:2148 #11 0x00007feef932441a in Tk_MainEx (argc=<optimized out>, argv=<optimized out>, appInitProc=0x563ab6618b30, interp=0x563ab6dcef00) at ./unix/../generic/tkMain.c:390 #12 0x0000563ab6618a0c in ?? () #13 0x00007feef8134b17 in __libc_start_main (main=0x563ab66189e0, argc=6, argv=0x7fffa14208c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffa14208b8) at ../csu/libc-start.c:310 #14 0x0000563ab6618a4a in _start () (gdb) X Error of failed request: BadAlloc (insufficient resources for operation) Major opcode of failed request: 53 (X_CreatePixmap) Serial number of failed request: 6718 Current serial number in output stream: 9728 Without debug symbols: Thread 1 "wish" hit Breakpoint 1, XGetErrorText (dpy=dpy@entry=0x559ba7e67f60, code=11, buffer=buffer@entry=0x7ffe2756ca60 "H\326V'\376\177", nbytes=nbytes@entry=8192) at ../../src/ErrDes.c:105 105 ../../src/ErrDes.c: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 XGetErrorText (dpy=dpy@entry=0x559ba7e67f60, code=11, buffer=buffer@entry=0x7ffe2756ca60 "H\326V'\376\177", nbytes=nbytes@entry=8192) at ../../src/ErrDes.c:105 #1 0x00007f40720d279b in _XPrintDefaultError (dpy=dpy@entry=0x559ba7e67f60, event=0x7ffe27570ac0, fp=0x7f4071ab9680 <_IO_2_1_stderr_>) at ../../src/XlibInt.c:1279 #2 0x00007f40720d3fc3 in _XDefaultError (dpy=0x559ba7e67f60, event=<optimized out>) at ../../src/XlibInt.c:1384 #3 0x00007f40720d411a in _XError (dpy=dpy@entry=0x559ba7e67f60, rep=rep@entry=0x559ba86a0070) at ../../src/XlibInt.c:1444 #4 0x00007f40720d1077 in handle_error (dpy=0x559ba7e67f60, err=0x559ba86a0070, in_XReply=<optimized out>) at ../../src/xcb_io.c:199 #5 0x00007f40720d111d in handle_response (dpy=dpy@entry=0x559ba7e67f60, response=0x559ba86a0070, in_XReply=in_XReply@entry=0) at ../../src/xcb_io.c:324 #6 0x00007f40720d1a55 in _XEventsQueued (dpy=0x559ba7e67f60, mode=<optimized out>) at ../../src/xcb_io.c:363 #7 0x00007f40720ce210 in XDrawString (dpy=0x559ba7e67f60, d=8390095, gc=<optimized out>, x=10, y=24550, string=0x559ba87f2760 "tmp-2575/", length=9) at ../../src/Text.c:71 #8 0x00007f4070c02267 in ?? () from /usr/lib/xcircuit/xcircuit.so #9 0x00007f4070c0251a in ?? () from /usr/lib/xcircuit/xcircuit.so #10 0x00007f4070c7fec2 in ?? () from /usr/lib/xcircuit/xcircuit.so #11 0x00007f4072b03ff5 in Tk_HandleEvent () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #12 0x00007f4072af73b0 in ?? () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #13 0x00007f4072af6af1 in ?? () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #14 0x00007f4072744a96 in TclNRRunCallbacks () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so #15 0x00007f407274564a in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so #16 0x00007f40727450f3 in Tcl_EvalEx () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so #17 0x00007f4072af5705 in Tk_BindEvent () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #18 0x00007f4072afbf4d in TkBindEventProc () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #19 0x00007f4072b04173 in Tk_HandleEvent () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #20 0x00007f4072b04920 in ?? () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #21 0x00007f407280ce17 in Tcl_ServiceEvent () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so #22 0x00007f407280d066 in Tcl_DoOneEvent () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so #23 0x00007f4072b04d72 in Tk_MainLoop () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #24 0x00007f4072b1341a in Tk_MainEx () from /usr/lib/x86_64-linux-gnu/libtk8.6.so #25 0x0000559ba7201a0c in ?? () #26 0x00007f4071923b17 in __libc_start_main (main=0x559ba72019e0, argc=6, argv=0x7ffe27571c38, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe27571c28) at ../csu/libc-start.c:310 #27 0x0000559ba7201a4a in _start () benutzer@debian:~$ gdb -q --pid 13239 Attaching to process 13239 [New LWP 13240] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007fc21940b22a in futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff6d4d0c50, expected=0, futex_word=0x55e4e1ac8c30) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 205 ../sysdeps/unix/sysv/linux/futex-internal.h: Datei oder Verzeichnis nicht gefunden. (gdb) set width 0 (gdb) set pagination off (gdb) directory /home/benutzer/libx11-6/orig/libx11-1.6.7/src/util Source directories searched: /home/benutzer/libx11-6/orig/libx11-1.6.7/src/util:$cdir:$cwd (gdb) directory /home/benutzer/xcircuit/orig/xcircuit-3.9.73+dfsg.1 Source directories searched: /home/benutzer/xcircuit/orig/xcircuit-3.9.73+dfsg.1:/home/benutzer/libx11-6/orig/libx11-1.6.7/src/util:$cdir:$cwd (gdb) b XGetErrorText Breakpoint 1 at 0x7fc218dcd200: file ../../src/ErrDes.c, line 105. (gdb) print _Xdebug $1 = 0 (gdb) set _Xdebug=1 (gdb) cont Continuing. Thread 1 "wish" hit Breakpoint 1, XGetErrorText (dpy=dpy@entry=0x55e4e1b31f60, code=11, buffer=buffer@entry=0x7fff6d4cbe60 "H\312Lm\377\177", nbytes=nbytes@entry=8192) at ../../src/ErrDes.c:105 105 { (gdb) bt #0 XGetErrorText (dpy=dpy@entry=0x55e4e1b31f60, code=11, buffer=buffer@entry=0x7fff6d4cbe60 "H\312Lm\377\177", nbytes=nbytes@entry=8192) at ../../src/ErrDes.c:105 #1 0x00007fc218ded79b in _XPrintDefaultError (dpy=dpy@entry=0x55e4e1b31f60, event=0x7fff6d4cfec0, fp=0x7fc2187d4680 <_IO_2_1_stderr_>) at ../../src/XlibInt.c:1279 #2 0x00007fc218deefc3 in _XDefaultError (dpy=0x55e4e1b31f60, event=<optimized out>) at ../../src/XlibInt.c:1384 #3 0x00007fc218def11a in _XError (dpy=dpy@entry=0x55e4e1b31f60, rep=rep@entry=0x55e4e237b270) at ../../src/XlibInt.c:1444 #4 0x00007fc218dec077 in handle_error (dpy=0x55e4e1b31f60, err=0x55e4e237b270, in_XReply=<optimized out>) at ../../src/xcb_io.c:199 #5 0x00007fc218dec11d in handle_response (dpy=dpy@entry=0x55e4e1b31f60, response=0x55e4e237b270, in_XReply=in_XReply@entry=0) at ../../src/xcb_io.c:324 #6 0x00007fc218deca55 in _XEventsQueued (dpy=0x55e4e1b31f60, mode=<optimized out>) at ../../src/xcb_io.c:363 #7 0x00007fc218de9210 in XDrawString (dpy=0x55e4e1b31f60, d=8390063, gc=<optimized out>, x=10, y=40944, string=0x55e4e1f70110 "tmp-929/", length=8) at ../../src/Text.c:71 #8 0x00007fc21791d267 in listfiles (w=0x55e4e21421a0, okaystruct=0x55e4e2329890, calldata=0x0) at filelist.c:500 #9 0x00007fc21791d51a in newfilelist (w=0x55e4e21421a0, okaystruct=0x55e4e2329890) at filelist.c:547 #10 0x00007fc21799aec2 in xctk_fileselect (clientData=0x55e4e2329890, eventPtr=0x7fff6d4d0480) at tclxcircuit.c:9567 #11 0x00007fc21981eff5 in Tk_HandleEvent (eventPtr=eventPtr@entry=0x7fff6d4d0480) at ./unix/../generic/tkEvent.c:1352 #12 0x00007fc2198123b0 in HandleEventGenerate (interp=interp@entry=0x55e4e1db8d00, mainWin=mainWin@entry=0x55e4e1f58680, objc=objc@entry=4, objv=objv@entry=0x55e4e1dc3820) at ./unix/../generic/tkBind.c:3458 #13 0x00007fc219811af1 in Tk_EventObjCmd (clientData=0x55e4e1f58680, interp=0x55e4e1db8d00, objc=6, objv=0x55e4e1dc3810) at ./unix/../generic/tkBind.c:2413 #14 0x00007fc21945fa96 in TclNRRunCallbacks (interp=interp@entry=0x55e4e1db8d00, result=0, rootPtr=0x0) at ./generic/tclBasic.c:4435 #15 0x00007fc21945eecf in Tcl_EvalObjv (interp=interp@entry=0x55e4e1db8d00, objc=objc@entry=6, objv=objv@entry=0x55e4e1dc3810, flags=flags@entry=2097168) at ./generic/tclBasic.c:4165 #16 0x00007fc21946064a in TclEvalEx (interp=0x55e4e1db8d00, script=0x7fff6d4d0880 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2", numBytes=<optimized out>, flags=<optimized out>, line=line@entry=1, clNextOuter=clNextOuter@entry=0x0, outerScript=0x7fff6d4d0880 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2") at ./generic/tclBasic.c:5304 #17 0x00007fc2194600f3 in Tcl_EvalEx (interp=<optimized out>, script=<optimized out>, numBytes=<optimized out>, flags=<optimized out>) at ./generic/tclBasic.c:4969 #18 0x00007fc219810705 in Tk_BindEvent (bindPtr=<optimized out>, eventPtr=eventPtr@entry=0x55e4e1d61560, tkwin=tkwin@entry=0x55e4e21487c0, numObjects=<optimized out>, numObjects@entry=4, objectPtr=<optimized out>, objectPtr@entry=0x7fff6d4d0ab0) at ./unix/../generic/tkBind.c:1505 #19 0x00007fc219816f4d in TkBindEventProc (winPtr=winPtr@entry=0x55e4e21487c0, eventPtr=eventPtr@entry=0x55e4e1d61560) at ./unix/../generic/tkCmds.c:319 #20 0x00007fc21981f173 in Tk_HandleEvent (eventPtr=eventPtr@entry=0x55e4e1d61560) at ./unix/../generic/tkEvent.c:1374 #21 0x00007fc21981f920 in WindowEventProc (evPtr=evPtr@entry=0x55e4e1d61550, flags=flags@entry=-3) at ./unix/../generic/tkEvent.c:1764 #22 0x00007fc219527e17 in Tcl_ServiceEvent (flags=flags@entry=-3) at ./generic/tclNotify.c:670 #23 0x00007fc219528066 in Tcl_DoOneEvent (flags=-3) at ./generic/tclNotify.c:903 #24 0x00007fc21981fd72 in Tk_MainLoop () at ./unix/../generic/tkEvent.c:2148 #25 0x00007fc21982e41a in Tk_MainEx (argc=<optimized out>, argv=<optimized out>, appInitProc=0x55e4dfa4fb30, interp=0x55e4e1ad2f00) at ./unix/../generic/tkMain.c:390 #26 0x000055e4dfa4fa0c in ?? () #27 0x00007fc21863eb17 in __libc_start_main (main=0x55e4dfa4f9e0, argc=6, argv=0x7fff6d4d1038, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff6d4d1028) at ../csu/libc-start.c:310 #28 0x000055e4dfa4fa4a in _start () (gdb) list listfiles 364 /*----------------------------------------------------------------------*/ 365 /* Make a list of the files in the list widget window */ 366 /*----------------------------------------------------------------------*/ 367 368 void listfiles(xcWidget w, popupstruct *okaystruct, caddr_t calldata) 369 { ... 488 for (n = 0; n < flfiles; n++) { 489 switch (files[n].filetype) { 490 case DIRECTORY: 491 XSetForeground(dpy, sgc, colorlist[SELECTCOLOR].color.pixel); 492 break; 493 case MATCH: 494 XSetForeground(dpy, sgc, colorlist[FILTERCOLOR].color.pixel); 495 break; 496 case NONMATCH: 497 XSetForeground(dpy, sgc, colorlist[FOREGROUND].color.pixel); 498 break; 499 } 500 XDrawString(dpy, flistpix, sgc, 10, 10 + FILECHARASCENT + n * FILECHARHEIGHT, 501 files[n].filename, strlen(files[n].filename)); 502 } (gdb) list XDrawString 40 int length) 41 { 42 int Datalength = 0; 43 register xPolyText8Req *req; 44 45 if (length <= 0) 46 return 0; 47 48 LockDisplay(dpy); 49 FlushGC(dpy, gc); 50 GetReq (PolyText8, req); 51 req->drawable = d; 52 req->gc = gc->gid; 53 req->x = x; 54 req->y = y; 55 56 57 Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + length; 58 59 60 req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */ 61 62 63 /* 64 * If the entire request does not fit into the remaining space in the 65 * buffer, flush the buffer first. If the request does fit into the 66 * empty buffer, then we won't have to flush it at the end to keep 67 * the buffer 32-bit aligned. 68 */ 69 70 if (dpy->bufptr + Datalength > dpy->bufmax) 71 _XFlush (dpy); 72 ########### benutzer@debian:~$ xcircuit #client benutzer@debian:~$ gdb -q --pid $(ps aux | grep xcircuit | grep -v "grep xcircuit" | awk '{print $2}') Attaching to process 19489 [New LWP 19490] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007f2938a3022a in futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7ffebfb3a870, expected=0, futex_word=0x561d115b7c34) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 205 ../sysdeps/unix/sysv/linux/futex-internal.h: Datei oder Verzeichnis nicht gefunden. (gdb) set width 0 (gdb) set pagination off (gdb) directory /home/benutzer/libx11-6/orig/libx11-1.6.7/src/util Source directories searched: /home/benutzer/libx11-6/orig/libx11-1.6.7/src/util:$cdir:$cwd (gdb) directory /home/benutzer/xcircuit/orig/xcircuit-3.9.73+dfsg.1 Source directories searched: /home/benutzer/xcircuit/orig/xcircuit-3.9.73+dfsg.1:/home/benutzer/libx11-6/orig/libx11-1.6.7/src/util:$cdir:$cwd (gdb) set _Xdebug=1 (gdb) b XGetErrorText Breakpoint 1 at 0x7f29383f2200: file ../../src/ErrDes.c, line 105. (gdb) b Text.c:71 Breakpoint 2 at 0x7f293840e208: file ../../src/Text.c, line 71. (gdb) cont Continuing. Thread 1 "wish" hit Breakpoint 2, XDrawString (dpy=0x561d11620f60, d=8390060, gc=<optimized out>, x=10, y=8170, string=0x561d121cd8c0 "tmp-1521/", length=9) at ../../src/Text.c:71 71 _XFlush (dpy); (gdb) bt #0 XDrawString (dpy=0x561d11620f60, d=8390060, gc=<optimized out>, x=10, y=8170, string=0x561d121cd8c0 "tmp-1521/", length=9) at ../../src/Text.c:71 #1 0x00007f2936ef9267 in listfiles (w=0x561d11c72560, okaystruct=0x561d11e5b770, calldata=0x0) at filelist.c:500 #2 0x00007f2936ef951a in newfilelist (w=0x561d11c72560, okaystruct=0x561d11e5b770) at filelist.c:547 #3 0x00007f2936f76ec2 in xctk_fileselect (clientData=0x561d11e5b770, eventPtr=0x7ffebfb3a0a0) at tclxcircuit.c:9567 #4 0x00007f2938e43ff5 in Tk_HandleEvent (eventPtr=eventPtr@entry=0x7ffebfb3a0a0) at ./unix/../generic/tkEvent.c:1352 #5 0x00007f2938e373b0 in HandleEventGenerate (interp=interp@entry=0x561d118976f0, mainWin=mainWin@entry=0x561d11a51b80, objc=objc@entry=4, objv=objv@entry=0x561d118b2840) at ./unix/../generic/tkBind.c:3458 #6 0x00007f2938e36af1 in Tk_EventObjCmd (clientData=0x561d11a51b80, interp=0x561d118976f0, objc=6, objv=0x561d118b2830) at ./unix/../generic/tkBind.c:2413 #7 0x00007f2938a84a96 in TclNRRunCallbacks (interp=interp@entry=0x561d118976f0, result=0, rootPtr=0x0) at ./generic/tclBasic.c:4435 #8 0x00007f2938a83ecf in Tcl_EvalObjv (interp=interp@entry=0x561d118976f0, objc=objc@entry=6, objv=objv@entry=0x561d118b2830, flags=flags@entry=2097168) at ./generic/tclBasic.c:4165 #9 0x00007f2938a8564a in TclEvalEx (interp=0x561d118976f0, script=0x7ffebfb3a4a0 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2", numBytes=<optimized out>, flags=<optimized out>, line=line@entry=1, clNextOuter=clNextOuter@entry=0x0, outerScript=0x7ffebfb3a4a0 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2") at ./generic/tclBasic.c:5304 #10 0x00007f2938a850f3 in Tcl_EvalEx (interp=<optimized out>, script=<optimized out>, numBytes=<optimized out>, flags=<optimized out>) at ./generic/tclBasic.c:4969 #11 0x00007f2938e35705 in Tk_BindEvent (bindPtr=<optimized out>, eventPtr=eventPtr@entry=0x561d11e27640, tkwin=tkwin@entry=0x561d11c7b790, numObjects=<optimized out>, numObjects@entry=4, objectPtr=<optimized out>, objectPtr@entry=0x7ffebfb3a6d0) at ./unix/../generic/tkBind.c:1505 #12 0x00007f2938e3bf4d in TkBindEventProc (winPtr=winPtr@entry=0x561d11c7b790, eventPtr=eventPtr@entry=0x561d11e27640) at ./unix/../generic/tkCmds.c:319 #13 0x00007f2938e44173 in Tk_HandleEvent (eventPtr=eventPtr@entry=0x561d11e27640) at ./unix/../generic/tkEvent.c:1374 #14 0x00007f2938e44920 in WindowEventProc (evPtr=evPtr@entry=0x561d11e27630, flags=flags@entry=-3) at ./unix/../generic/tkEvent.c:1764 #15 0x00007f2938b4ce17 in Tcl_ServiceEvent (flags=flags@entry=-3) at ./generic/tclNotify.c:670 #16 0x00007f2938b4d066 in Tcl_DoOneEvent (flags=-3) at ./generic/tclNotify.c:903 #17 0x00007f2938e44d72 in Tk_MainLoop () at ./unix/../generic/tkEvent.c:2148 #18 0x00007f2938e5341a in Tk_MainEx (argc=<optimized out>, argv=<optimized out>, appInitProc=0x561d0fde4b30, interp=0x561d115c1f00) at ./unix/../generic/tkMain.c:390 #19 0x0000561d0fde4a0c in ?? () #20 0x00007f2937c63b17 in __libc_start_main (main=0x561d0fde49e0, argc=6, argv=0x7ffebfb3ac58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffebfb3ac48) at ../csu/libc-start.c:310 #21 0x0000561d0fde4a4a in _start () #server root@debian:~# gdb -q --pid $(pidof Xorg) Attaching to process 19059 [New LWP 19070] [New LWP 19071] [New LWP 19072] [New LWP 19073] [New LWP 19074] [New LWP 19075] [New LWP 19076] [New LWP 19077] [New LWP 19080] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007fc906c3d207 in epoll_wait (epfd=3, events=events@entry=0x7fffb806e9b0, maxevents=maxevents@entry=256, timeout=119114) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30 30 ../sysdeps/unix/sysv/linux/epoll_wait.c: Datei oder Verzeichnis nicht gefunden. (gdb) set width 0 (gdb) set pagination off (gdb) directory /home/benutzer/xserver-xorg-core/orig/xorg-server-1.20.3/hw/xfree86/drivers/modesetting Source directories searched: /home/benutzer/xserver-xorg-core/orig/xorg-server-1.20.3/hw/xfree86/drivers/modesetting:$cdir:$cwd (gdb) b dixLookupResourceByClass Breakpoint 1 at 0x5599b7d4c690: file ../../../../dix/resource.c, line 1231. (gdb) cont Continuing. ... (gdb) cont Continuing. Thread 1 "Xorg" hit Breakpoint 1, dixLookupResourceByClass (result=result@entry=0x7fffb806f5d0, id=id@entry=8390060, rclass=rclass@entry=1073741824, client=client@entry=0x5599b8f22740, mode=mode@entry=2) at ../../../../dix/resource.c:1231 1231 int cid = CLIENT_ID(id); (gdb) bt #0 dixLookupResourceByClass (result=result@entry=0x7fffb806f5d0, id=id@entry=8390060, rclass=rclass@entry=1073741824, client=client@entry=0x5599b8f22740, mode=mode@entry=2) at ../../../../dix/resource.c:1231 #1 0x00005599b7d2ae2c in dixLookupDrawable (pDraw=pDraw@entry=0x7fffb806f620, id=8390060, client=client@entry=0x5599b8f22740, type=type@entry=4294967295, access=access@entry=2) at ../../../../dix/dixutils.c:202 #2 0x00005599b7d22ec1 in ProcPolyFillRectangle (client=0x5599b8f22740) at ../../../../dix/dispatch.c:1926 #3 0x00005599b7d2698e in Dispatch () at ../../../../dix/dispatch.c:478 #4 0x00005599b7d2a936 in dix_main (argc=10, argv=0x7fffb806f7e8, envp=<optimized out>) at ../../../../dix/main.c:276 #5 0x00007fc906b67b17 in __libc_start_main (main=0x5599b7d14650 <main>, argc=10, argv=0x7fffb806f7e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffb806f7d8) at ../csu/libc-start.c:310 #6 0x00005599b7d1468a in _start () (gdb) next 1236 if ((cid < LimitClients) && clientTable[cid].buckets) { (gdb) 1237 res = clientTable[cid].resources[HashResourceID(id, clientTable[cid].hashsize)]; (gdb) print cid $1 = 4 (gdb) print clientTable[cid].hashsize $2 = 8 (gdb) print id $3 = 8390060 (gdb) list HashResourceID 668 int 669 HashResourceID(XID id, int numBits) 670 { 671 static XID mask; 672 673 if (!mask) 674 mask = RESOURCE_ID_MASK; 675 id &= mask; 676 if (numBits < 9) 677 return (id ^ (id >> numBits) ^ (id >> (numBits<<1))) & ~((~0) << numBits); (gdb) 678 return (id ^ (id >> numBits)) & ~((~0) << numBits); 679 } 680 681 static XID 682 AvailableID(int client, XID id, XID maxid, XID goodid) 683 { 684 ResourcePtr res; 685 686 if ((goodid >= id) && (goodid <= maxid)) 687 return goodid; (gdb) step HashResourceID (id=id@entry=8390060, numBits=8) at ../../../../dix/resource.c:673 673 if (!mask) (gdb) next 675 id &= mask; (gdb) print id $4 = 8390060 (gdb) next 676 if (numBits < 9) (gdb) print id $5 = 1452 (gdb) print numBits $6 = 8 (gdb) next 677 return (id ^ (id >> numBits) ^ (id >> (numBits<<1))) & ~((~0) << numBits); (gdb) finish Run till exit from #0 HashResourceID (id=1452, id@entry=8390060, numBits=8) at ../../../../dix/resource.c:677 0x00005599b7d4c73e in dixLookupResourceByClass (result=result@entry=0x7fffb806f5d0, id=id@entry=8390060, rclass=rclass@entry=1073741824, client=client@entry=0x5599b8f22740, mode=mode@entry=2) at ../../../../dix/resource.c:1237 1237 res = clientTable[cid].resources[HashResourceID(id, clientTable[cid].hashsize)]; Value returned is $7 = 169 (gdb) print clientTable[cid].resources value has been optimized out (gdb) list 1232 ResourcePtr res = NULL; 1233 1234 *result = NULL; 1235 1236 if ((cid < LimitClients) && clientTable[cid].buckets) { 1237 res = clientTable[cid].resources[HashResourceID(id, clientTable[cid].hashsize)]; 1238 1239 for (; res; res = res->next) 1240 if (res->id == id && (res->type & rclass)) 1241 break; (gdb) list - 1222 1223 *result = res->value; 1224 return Success; 1225 } 1226 1227 int 1228 dixLookupResourceByClass(void **result, XID id, RESTYPE rclass, 1229 ClientPtr client, Mask mode) 1230 { 1231 int cid = CLIENT_ID(id); (gdb) list 1232 ResourcePtr res = NULL; 1233 1234 *result = NULL; 1235 1236 if ((cid < LimitClients) && clientTable[cid].buckets) { 1237 res = clientTable[cid].resources[HashResourceID(id, clientTable[cid].hashsize)]; 1238 1239 for (; res; res = res->next) 1240 if (res->id == id && (res->type & rclass)) 1241 break; (gdb) next 1239 for (; res; res = res->next) (gdb) print res $8 = (ResourcePtr) 0x0 (gdb) bt #0 dixLookupResourceByClass (result=result@entry=0x7fffb806f5d0, id=id@entry=8390060, rclass=rclass@entry=1073741824, client=client@entry=0x5599b8f22740, mode=mode@entry=2) at ../../../../dix/resource.c:1239 #1 0x00005599b7d2ae2c in dixLookupDrawable (pDraw=pDraw@entry=0x7fffb806f620, id=8390060, client=client@entry=0x5599b8f22740, type=type@entry=4294967295, access=access@entry=2) at ../../../../dix/dixutils.c:202 #2 0x00005599b7d22ec1 in ProcPolyFillRectangle (client=0x5599b8f22740) at ../../../../dix/dispatch.c:1926 #3 0x00005599b7d2698e in Dispatch () at ../../../../dix/dispatch.c:478 #4 0x00005599b7d2a936 in dix_main (argc=10, argv=0x7fffb806f7e8, envp=<optimized out>) at ../../../../dix/main.c:276 #5 0x00007fc906b67b17 in __libc_start_main (main=0x5599b7d14650 <main>, argc=10, argv=0x7fffb806f7e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffb806f7d8) at ../csu/libc-start.c:310 #6 0x00005599b7d1468a in _start () (gdb) next 1243 if (client) { (gdb) 1244 client->errorValue = id; (gdb) 1246 if (!res) (gdb) display/i $pc 1: x/i $pc => 0x5599b7d4c71b <dixLookupResourceByClass+139>: add $0x18,%rsp (gdb) stepi 0x00005599b7d4c71f 1246 if (!res) 1: x/i $pc => 0x5599b7d4c71f <dixLookupResourceByClass+143>: mov $0x2,%eax (gdb) 0x00005599b7d4c724 1246 if (!res) 1: x/i $pc => 0x5599b7d4c724 <dixLookupResourceByClass+148>: pop %rbx (gdb) 0x00005599b7d4c725 1246 if (!res) 1: x/i $pc => 0x5599b7d4c725 <dixLookupResourceByClass+149>: pop %rbp (gdb) 0x00005599b7d4c726 1246 if (!res) 1: x/i $pc => 0x5599b7d4c726 <dixLookupResourceByClass+150>: pop %r12 (gdb) 0x00005599b7d4c728 1246 if (!res) 1: x/i $pc => 0x5599b7d4c728 <dixLookupResourceByClass+152>: pop %r13 (gdb) 0x00005599b7d4c72a 1246 if (!res) 1: x/i $pc => 0x5599b7d4c72a <dixLookupResourceByClass+154>: pop %r14 (gdb) 0x00005599b7d4c72c 1246 if (!res) 1: x/i $pc => 0x5599b7d4c72c <dixLookupResourceByClass+156>: pop %r15 (gdb) 0x00005599b7d4c72e 1246 if (!res) 1: x/i $pc => 0x5599b7d4c72e <dixLookupResourceByClass+158>: retq (gdb) list 1241 break; 1242 } 1243 if (client) { 1244 client->errorValue = id; 1245 } 1246 if (!res) 1247 return BadValue; 1248 1249 if (client) { 1250 cid = XaceHook(XACE_RESOURCE_ACCESS, client, id, res->type, ########### client: gdb -q --pid $(ps aux | grep xcircuit | grep -v "grep xcircuit" | awk '{print $2}') set width 0 set pagination off directory /home/benutzer/libx11-6/orig/libx11-1.6.7/src/util directory /home/benutzer/xcircuit/orig/xcircuit-3.9.73+dfsg.1 set _Xdebug=1 b XGetErrorText b Text.c:71 cont server: gdb -q --pid $(pidof Xorg) set width 0 set pagination off directory /home/benutzer/xserver-xorg-core/orig/xorg-server-1.20.3/hw/xfree86/drivers/modesetting b dixLookupResourceByClass cont # b dixLookupDrawable # b ProcPolyText # b doPolyText # b SendErrorToClient ########### (gdb) print pixheight $6 = 42039 (gdb) print textheight $7 = 98 (gdb) 480 flistpix = XCreatePixmap(dpy, areawin->window, textwidth, pixheight, ########### client: gdb -q --pid $(ps aux | grep xcircuit | grep -v "grep xcircuit" | awk '{print $2}') set width 0 set pagination off directory /home/benutzer/libx11-6/orig/libx11-1.6.7/src/util directory /home/benutzer/xcircuit/orig/xcircuit-3.9.73+dfsg.1 set _Xdebug=1 b listfiles cont (gdb) list filelist.c:480 477 pixheight = flfiles * FILECHARHEIGHT + 25; 478 if (pixheight < textheight) pixheight = textheight; 479 480 flistpix = XCreatePixmap(dpy, areawin->window, textwidth, pixheight, 481 DefaultDepthOfScreen(xcScreen(w))); (gdb) print pixheight $1 = 42039 (gdb) print textheight $2 = 98 (gdb) print flfiles $3 = 3001 (gdb) bt #0 XCreatePixmap (dpy=0x561a0f1f4f60, d=8389047, width=339, height=42039, depth=24) at ../../src/CrPixmap.c:50 #1 0x00007f67bfa7d020 in listfiles (w=0x561a0f846e00, okaystruct=0x561a0fa27f60, calldata=0x0) at filelist.c:480 #2 0x00007f67bfa7d51a in newfilelist (w=0x561a0f846e00, okaystruct=0x561a0fa27f60) at filelist.c:547 #3 0x00007f67bfafaec2 in xctk_fileselect (clientData=0x561a0fa27f60, eventPtr=0x7ffff0ef86f0) at tclxcircuit.c:9567 #4 0x00007f67c19c7ff5 in Tk_HandleEvent (eventPtr=eventPtr@entry=0x7ffff0ef86f0) at ./unix/../generic/tkEvent.c:1352 #5 0x00007f67c19bb3b0 in HandleEventGenerate (interp=interp@entry=0x561a0f46b6f0, mainWin=mainWin@entry=0x561a0f624180, objc=objc@entry=4, objv=objv@entry=0x561a0f486840) at ./unix/../generic/tkBind.c:3458 #6 0x00007f67c19baaf1 in Tk_EventObjCmd (clientData=0x561a0f624180, interp=0x561a0f46b6f0, objc=6, objv=0x561a0f486830) at ./unix/../generic/tkBind.c:2413 #7 0x00007f67c1608a96 in TclNRRunCallbacks (interp=interp@entry=0x561a0f46b6f0, result=0, rootPtr=0x0) at ./generic/tclBasic.c:4435 #8 0x00007f67c1607ecf in Tcl_EvalObjv (interp=interp@entry=0x561a0f46b6f0, objc=objc@entry=6, objv=objv@entry=0x561a0f486830, flags=flags@entry=2097168) at ./generic/tclBasic.c:4165 #9 0x00007f67c160964a in TclEvalEx (interp=0x561a0f46b6f0, script=0x7ffff0ef8af0 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2", numBytes=<optimized out>, flags=<optimized out>, line=line@entry=1, clNextOuter=clNextOuter@entry=0x0, outerScript=0x7ffff0ef8af0 "event generate .filelist.listwin.win <ButtonPress> -button 2 ; event generate .filelist.listwin.win <ButtonRelease> -button 2") at ./generic/tclBasic.c:5304 #10 0x00007f67c16090f3 in Tcl_EvalEx (interp=<optimized out>, script=<optimized out>, numBytes=<optimized out>, flags=<optimized out>) at ./generic/tclBasic.c:4969 #11 0x00007f67c19b9705 in Tk_BindEvent (bindPtr=<optimized out>, eventPtr=eventPtr@entry=0x561a0f9f3aa0, tkwin=tkwin@entry=0x561a0f84c020, numObjects=<optimized out>, numObjects@entry=4, objectPtr=<optimized out>, objectPtr@entry=0x7ffff0ef8d20) at ./unix/../generic/tkBind.c:1505 #12 0x00007f67c19bff4d in TkBindEventProc (winPtr=winPtr@entry=0x561a0f84c020, eventPtr=eventPtr@entry=0x561a0f9f3aa0) at ./unix/../generic/tkCmds.c:319 #13 0x00007f67c19c8173 in Tk_HandleEvent (eventPtr=eventPtr@entry=0x561a0f9f3aa0) at ./unix/../generic/tkEvent.c:1374 #14 0x00007f67c19c8920 in WindowEventProc (evPtr=evPtr@entry=0x561a0f9f3a90, flags=flags@entry=-3) at ./unix/../generic/tkEvent.c:1764 #15 0x00007f67c16d0e17 in Tcl_ServiceEvent (flags=flags@entry=-3) at ./generic/tclNotify.c:670 #16 0x00007f67c16d1066 in Tcl_DoOneEvent (flags=-3) at ./generic/tclNotify.c:903 #17 0x00007f67c19c8d72 in Tk_MainLoop () at ./unix/../generic/tkEvent.c:2148 #18 0x00007f67c19d741a in Tk_MainEx (argc=<optimized out>, argv=<optimized out>, appInitProc=0x561a0d485b30, interp=0x561a0f195f00) at ./unix/../generic/tkMain.c:390 #19 0x0000561a0d485a0c in ?? () #20 0x00007f67c07e7b17 in __libc_start_main (main=0x561a0d4859e0, argc=6, argv=0x7ffff0ef92a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffff0ef9298) at ../csu/libc-start.c:310 #21 0x0000561a0d485a4a in _start () server: (gdb) bt #0 ProcCreatePixmap (client=0x5599b8dce330) at ../../../../dix/dispatch.c:1415 #1 0x00005599b7d2698e in Dispatch () at ../../../../dix/dispatch.c:478 #2 0x00005599b7d2a936 in dix_main (argc=10, argv=0x7fffb806f7e8, envp=<optimized out>) at ../../../../dix/main.c:276 #3 0x00007fc906b67b17 in __libc_start_main (main=0x5599b7d14650 <main>, argc=10, argv=0x7fffb806f7e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffb806f7d8) at ../csu/libc-start.c:310 #4 0x00005599b7d1468a in _start () (gdb) list ProcCreatePixmap 1389 return (*pPixmap->drawable.pScreen->DestroyPixmap) (pPixmap); 1390 } 1391 1392 int 1393 ProcCreatePixmap(ClientPtr client) 1394 { 1395 PixmapPtr pMap; 1396 DrawablePtr pDraw; 1397 1398 REQUEST(xCreatePixmapReq); 1399 DepthPtr pDepth; 1400 int i, rc; 1401 1402 REQUEST_SIZE_MATCH(xCreatePixmapReq); 1403 client->errorValue = stuff->pid; 1404 LEGAL_NEW_RESOURCE(stuff->pid, client); 1405 1406 rc = dixLookupDrawable(&pDraw, stuff->drawable, client, M_ANY, 1407 DixGetAttrAccess); 1408 if (rc != Success) 1409 return rc; 1410 1411 if (!stuff->width || !stuff->height) { 1412 client->errorValue = 0; 1413 return BadValue; 1414 } 1415 if (stuff->width > 32767 || stuff->height > 32767) { 1416 /* It is allowed to try and allocate a pixmap which is larger than 1417 * 32767 in either dimension. However, all of the framebuffer code 1418 * is buggy and does not reliably draw to such big pixmaps, basically 1419 * because the Region data structure operates with signed shorts 1420 * for the rectangles in it. 1421 * 1422 * Furthermore, several places in the X server computes the 1423 * size in bytes of the pixmap and tries to store it in an 1424 * integer. This integer can overflow and cause the allocated size 1425 * to be much smaller. 1426 * 1427 * So, such big pixmaps are rejected here with a BadAlloc 1428 */ 1429 return BadAlloc; 1430 } ########### root@debian:~# for i in {1..2300}; do mkdir /test/tmp-$i -p; done # -> works with 512M root@debian:~# for i in {1..2400}; do mkdir /test/tmp-$i -p; done # -> fails with 512M