From: Nico B. <mlr...@no...> - 2007-04-20 07:03:53
|
Hello, I needed to access the a windows server yesterday, and I only get segmentation faults after logging on or having done a little work (a few second really). The system is a Gentoo box using the rdesktop-1.5.1-r1 ebuild from a few months ago. Probably a change on the windows server (I have no control over) ignited this. The server is a recent small business terminal server. I tried this patch, but no relief. http://www.freebsd.org/cgi/q:ery-pr.cgi?pr=109436 The error is the same as Bahik Attila 's a few days ago. NOT IMPLEMENTED: System pointer message 0x7f00 Segmentation fault Here is an ltrace from the fault, an strace shows less detail just a segmented read of chunks of 15K. I hope this helps in tracking the fault. If needed i can try to help testing. Kind regards, Nico Baggus XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 693, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 33808, 248, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 621, 375) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 621, 375) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 621, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 621, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 622, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 622, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 622, 356) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 622, 356) = 1 memcpy(0x80aedd5, "\376\005", 3) = 0x80aedd5 XSetForeground(0x83bf008, 0x83cc840, 54904, 0x80aeda8, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 629, 358) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0x83c031c, 0x83bf008) = 1 XSetBackground(0x83bf008, 0x83cc840, 54904, 0x83c0330, 0x83bf008) = 1 XSetFillStyle(0x83bf008, 0x83cc840, 2, 0x83c0330, 0x83bf008) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600047, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 629, 361, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 629, 361) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x360004c, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 637, 363, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 637, 363) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600042, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 643, 361, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 643, 361) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x360004d, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 647, 361, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 647, 361) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x360003e, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 649, 363, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 649, 363) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600035, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 655, 363, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 655, 363) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600031, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 661, 363, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 661, 363) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x360004e, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 670, 362, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 670, 362) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x360004e, 0x83d38c8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 678, 362, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 678, 362) = 1 XSetFillStyle(0x83bf008, 0x83cc840, 0, 0, 0x83bf008) = 1 XCopyArea(0x83bf008, 0x3600005, 0x3600002, 0x83cc840, 629) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 377, 354) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 377, 354) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 378, 354) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 378, 354) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 377, 376) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 377, 376) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 451, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 451, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 450, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 450, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 378, 375) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 378, 375) = 1 XSetForeground(0x83bf008, 0x83cc840, 65535, 255, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 378, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 378, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 65535, 255, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 379, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 379, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 33808, 248, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 449, 356) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 449, 356) = 1 XSetForeground(0x83bf008, 0x83cc840, 33808, 248, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 379, 374) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 379, 374) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 379, 356) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 379, 356) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 380, 356) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 380, 356) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 380, 357) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 380, 357) = 1 memcpy(0x80aedd5, "\034", 4) = 0x80aedd5 XSetForeground(0x83bf008, 0x83cc840, 54904, 0x80aeda8, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 407, 358) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0x83c0778, 0x83bf008) = 1 XSetBackground(0x83bf008, 0x83cc840, 54904, 0x83c078c, 0x83bf008) = 1 XSetFillStyle(0x83bf008, 0x83cc840, 2, 0x83c078c, 0x83bf008) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600047, 0, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 407, 361, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 407, 361) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600048, 8, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 415, 361, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 415, 361) = 1 XSetFillStyle(0x83bf008, 0x83cc840, 0, 4, 0x83bf008) = 1 XCopyArea(0x83bf008, 0x3600005, 0x3600002, 0x83cc840, 407) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 532, 354) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 532, 354) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 458, 376) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 458, 376) = 1 XSetForeground(0x83bf008, 0x83cc840, 65535, 255, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 458, 354) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 458, 354) = 1 XSetForeground(0x83bf008, 0x83cc840, 65535, 255, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 459, 354) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 459, 354) = 1 XSetForeground(0x83bf008, 0x83cc840, 33808, 248, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 531, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 531, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 33808, 248, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 459, 375) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 459, 375) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 459, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 459, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 460, 355) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 460, 355) = 1 XSetForeground(0x83bf008, 0x83cc840, 54904, 9, 0) = 1 XFillRectangle(0x83bf008, 0x3600002, 0x83cc840, 460, 356) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 460, 356) = 1 memcpy(0x80aedd5, "\376\004", 3) = 0x80aedd5 XSetForeground(0x83bf008, 0x83cc840, 54904, 0x80aeda8, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 479, 358) = 1 XSetForeground(0x83bf008, 0x83cc840, 0, 0x83c09b8, 0x83bf008) = 1 XSetBackground(0x83bf008, 0x83cc840, 54904, 0x83c09cc, 0x83bf008) = 1 XSetFillStyle(0x83bf008, 0x83cc840, 2, 0x83c09cc, 0x83bf008) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600049, 0x83ccb80, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 479, 361, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 479, 361) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600036, 0x83ccb80, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 486, 363, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 486, 363) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600035, 0x83ccb80, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 492, 363, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 492, 363) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x360004a, 0x83ccb80, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 498, 363, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 498, 363) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x3600032, 0x83ccb80, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 503, 363, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 503, 363) = 1 XSetStipple(0x83bf008, 0x83cc840, 0x360004b, 0x83ccb80, 0x83bf008) = 1 XSetTSOrigin(0x83bf008, 0x83cc840, 509, 360, 0x83bf008) = 1 XFillRectangle(0x83bf008, 0x3600005, 0x83cc840, 509, 360) = 1 XSetFillStyle(0x83bf008, 0x83cc840, 0, 0, 0x83bf008) = 1 XCopyArea(0x83bf008, 0x3600005, 0x3600002, 0x83cc840, 479) = 1 XCreateImage(0x83bf008, 0x83c39c8, 16, 2, 0) = 0 XPutImage(0x83bf008, 0x3600005, 0x83cc840, 0, 0 <unfinished ...> --- SIGSEGV (Segmentation fault) --- +++ killed by SIGSEGV +++ |
From: Nico B. <mlr...@no...> - 2007-04-20 16:22:12
|
Followup On Friday 20 April 2007 09:03, Nico Baggus wrote: > The system is a Gentoo box using the rdesktop-1.5.1-r1 ebuild > from a few months ago. Probably a change on the windows server (I have no It is version 1.5.0-r1 (rdesktop 1.5.0) from november 26, 2006 > control over) ignited this. > The server is a year old small business terminal server. But doesn't have the patches of the last month or two/three or so installed. > > NOT IMPLEMENTED: System pointer message 0x7f00 > Segmentation fault > The error message is just segmentation fault when sound is not disabled. (-rsound:off) For an ltrace see the original message. Kind regards, Nico |
From: Nico B. <mlr...@no...> - 2007-04-20 22:06:46
|
=46ollowup 2 (gdb) bt #0 0xb7df97ff in XPutImage () from /usr/lib/libX11.so.6 #1 0x08050217 in ui_desktop_restore () #2 0x0805e36c in process_orders () #3 0x08061f7b in rdp5_process () #4 0x0805b877 in rdp_recv () #5 0x0805bd67 in rdp_loop () #6 0x0805c871 in rdp_main_loop () #7 0x0804d875 in main () (gdb) info registers eax 0x1a1 417 ecx 0x10 16 edx 0x0 0 ebx 0xb7e9db24 -1209410780 esp 0xbff75ca0 0xbff75ca0 ebp 0xbff75d38 0xbff75d38 esi 0x1a1 417 edi 0x0 0 eip 0xb7df97ff 0xb7df97ff <XPutImage+83> eflags 0x210246 [ PF ZF IF RF ID ] cs 0x73 115 ss 0x7b 123 ds 0x7b 123 es 0x7b 123 fs 0x0 0 gs 0x33 51 Disassemble of Xput up to crash.... Dump of assembler code for function XPutImage: 0xb7df97ac <XPutImage+0>: push %ebp 0xb7df97ad <XPutImage+1>: mov %esp,%ebp 0xb7df97af <XPutImage+3>: push %edi 0xb7df97b0 <XPutImage+4>: push %esi 0xb7df97b1 <XPutImage+5>: push %ebx 0xb7df97b2 <XPutImage+6>: call 0xb7de3de7 <_fini+1329523> 0xb7df97b7 <XPutImage+11>: add $0xa436d,%ebx 0xb7df97bd <XPutImage+17>: sub $0x8c,%esp 0xb7df97c3 <XPutImage+23>: cmpl $0x0,0x18(%ebp) 0xb7df97c7 <XPutImage+27>: mov 0x28(%ebp),%eax 0xb7df97ca <XPutImage+30>: mov 0x2c(%ebp),%edx 0xb7df97cd <XPutImage+33>: mov 0x1c(%ebp),%edi 0xb7df97d0 <XPutImage+36>: mov %eax,0xffffff78(%ebp) 0xb7df97d6 <XPutImage+42>: mov %edx,0xffffff7c(%ebp) 0xb7df97dc <XPutImage+48>: jns 0xb7df97f0 <XPutImage+68> 0xb7df97de <XPutImage+50>: mov 0x18(%ebp),%ecx 0xb7df97e1 <XPutImage+53>: movl $0x0,0x18(%ebp) 0xb7df97e8 <XPutImage+60>: add %ecx,%eax 0xb7df97ea <XPutImage+62>: mov %eax,0xffffff78(%ebp) 0xb7df97f0 <XPutImage+68>: test %edi,%edi 0xb7df97f2 <XPutImage+70>: jns 0xb7df97fc <XPutImage+80> 0xb7df97f4 <XPutImage+72>: add %edi,0xffffff7c(%ebp) 0xb7df97fa <XPutImage+78>: xor %edi,%edi 0xb7df97fc <XPutImage+80>: mov 0x14(%ebp),%edx 0xb7df97ff <XPutImage+83>: mov (%edx),%eax <---- Parm= #4 0xb7df9801 <XPutImage+85>: mov 0x18(%ebp),%edx 0xb7df9804 <XPutImage+88>: add 0xffffff78(%ebp),%edx 0xb7df980a <XPutImage+94>: mov %eax,%ecx 0xb7df980c <XPutImage+96>: sub 0x18(%ebp),%ecx Caller of XputImage 0x080501b5 <ui_desktop_restore+68>: mov %eax,0xffffffd8(%ebp) 0x080501b8 <ui_desktop_restore+71>: idiv %ebx 0x080501ba <ui_desktop_restore+73>: push %eax 0x080501bb <ui_desktop_restore+74>: mov 0x81ab9e0,%eax 0x080501c0 <ui_desktop_restore+79>: pushl 0x38(%eax) 0x080501c3 <ui_desktop_restore+82>: pushl 0x18(%ebp) 0x080501c6 <ui_desktop_restore+85>: push %esi 0x080501c7 <ui_desktop_restore+86>: push %ecx 0x080501c8 <ui_desktop_restore+87>: push $0x0 0x080501ca <ui_desktop_restore+89>: push $0x2 0x080501cc <ui_desktop_restore+91>: pushl 0x806d058 0x080501d2 <ui_desktop_restore+97>: pushl 0x806d054 0x080501d8 <ui_desktop_restore+103>: push %eax 0x080501d9 <ui_desktop_restore+104>: call 0x804b0dc <XCreateImage@plt> 0x080501de <ui_desktop_restore+109>: add $0x30,%esp 0x080501e1 <ui_desktop_restore+112>: cmpl $0x0,0x806cd84 0x080501e8 <ui_desktop_restore+119>: mov %eax,0xffffffe0(%ebp) 0x080501eb <ui_desktop_restore+122>: je 0x80502e6=20 <ui_desktop_restore+373> 0x080501f1 <ui_desktop_restore+128>: push %edx 0x080501f2 <ui_desktop_restore+129>: push %edx 0x080501f3 <ui_desktop_restore+130>: pushl 0x18(%ebp) 0x080501f6 <ui_desktop_restore+133>: push %esi 0x080501f7 <ui_desktop_restore+134>: push %edi 0x080501f8 <ui_desktop_restore+135>: pushl 0xc(%ebp) 0x080501fb <ui_desktop_restore+138>: push $0x0 0x080501fd <ui_desktop_restore+140>: push $0x0 0x080501ff <ui_desktop_restore+142>: push %eax 0x08050200 <ui_desktop_restore+143>: pushl 0x806d00c 0x08050206 <ui_desktop_restore+149>: pushl 0x806d010 0x0805020c <ui_desktop_restore+155>: pushl 0x81ab9e0 0x08050212 <ui_desktop_restore+161>: call 0x804bb8c <XPutImage@plt> 0x08050217 <ui_desktop_restore+166>: add $0x28,%esp ^^^ ------- h= ere 0x0805021a <ui_desktop_restore+169>: push %edi 0x0805021b <ui_desktop_restore+170>: pushl 0xc(%ebp) 0x0805021e <ui_desktop_restore+173>: pushl 0x18(%ebp) 0x08050221 <ui_desktop_restore+176>: push %esi 0x08050222 <ui_desktop_restore+177>: push %edi 0x08050223 <ui_desktop_restore+178>: pushl 0xc(%ebp) 0x08050226 <ui_desktop_restore+181>: pushl 0x806d00c 0x0805022c <ui_desktop_restore+187>: pushl 0x81ab9ec 0x08050232 <ui_desktop_restore+193>: pushl 0x806d010 0x08050238 <ui_desktop_restore+199>: pushl 0x81ab9e0 0x0805023e <ui_desktop_restore+205>: call 0x804b1ec <XCopyArea@plt> 0x08050243 <ui_desktop_restore+210>: mov 0x806d008,%ebx 0x08050249 <ui_desktop_restore+216>: add $0x30,%esp 0x0805024c <ui_desktop_restore+219>: test %ebx,%ebx 0x0805024e <ui_desktop_restore+221>: je 0x80503ce=20 <ui_desktop_restore+605> =46rom this I conclude that XputImages crashes because the image variable i= s=20 NULL. (See following code fragment from xwin.c...) Appearantly XCreateImage failes (No errors checked) .... and the fail result crashes rdesktop. The only question is why did it work a few months ago and doesn't it now. With no appearant changes. void ui_desktop_restore(uint32 offset, int x, int y, int cx, int cy) { XImage *image; uint8 *data; offset *=3D g_bpp / 8; data =3D cache_get_desktop(offset, cx, cy, g_bpp / 8); if (data =3D=3D NULL) return; image =3D XCreateImage(g_display, g_visual, g_depth, ZPixmap, 0, (char *) data, cx, cy, BitmapPad(g_display), c= x *=20 g_bpp / 8); if (g_ownbackstore) { XPutImage(g_display, g_backstore, g_gc, image, 0, 0, x, y, = cx,=20 cy); XCopyArea(g_display, g_backstore, g_wnd, g_gc, x, y, cx, cy= ,=20 x, y); ON_ALL_SEAMLESS_WINDOWS(XCopyArea, (g_display, g_backstore, sw->wnd,=20 g_gc, x, y, cx, cy, x - sw->xoffset, y -= =20 sw->yoffset)); } else { XPutImage(g_display, g_wnd, g_gc, image, 0, 0, x, y, cx, cy= ); ON_ALL_SEAMLESS_WINDOWS(XCopyArea, (g_display, g_wnd, sw->wnd, g_gc, x= ,=20 y, cx, cy, x - sw->xoffset, y - sw->yoffset)); } XFree(image); } |
From: Nico B. <mlr...@no...> - 2007-04-20 22:28:37
|
Hello, Wrapping the part after XCreateImage with if (image) { if (g_ownbackstore).... ........ remainder of procedure.... } XFree(image) } makes the program run again, some artefacts still show on the screen (Popup window on windos is not removed etc.). as well as a bunch of ERROR: get bitmap 1:18 messages. on stdout. If more info is needed or a test of a path just leave a notice and i'll try it. kind regards, Nico Baggus > > void > ui_desktop_restore(uint32 offset, int x, int y, int cx, int cy) > { > XImage *image; > uint8 *data; > > offset *= g_bpp / 8; > data = cache_get_desktop(offset, cx, cy, g_bpp / 8); > if (data == NULL) > return; > > image = XCreateImage(g_display, g_visual, g_depth, ZPixmap, 0, > (char *) data, cx, cy, BitmapPad(g_display), > cx * g_bpp / 8); > > if (g_ownbackstore) > { > XPutImage(g_display, g_backstore, g_gc, image, 0, 0, x, y, > cx, cy); > XCopyArea(g_display, g_backstore, g_wnd, g_gc, x, y, cx, > cy, x, y); > ON_ALL_SEAMLESS_WINDOWS(XCopyArea, > (g_display, g_backstore, sw->wnd, > g_gc, > x, y, cx, cy, x - sw->xoffset, y - > sw->yoffset)); > } > else > { > XPutImage(g_display, g_wnd, g_gc, image, 0, 0, x, y, cx, > cy); ON_ALL_SEAMLESS_WINDOWS(XCopyArea, > (g_display, g_wnd, sw->wnd, g_gc, > x, y, cx, cy, > x - sw->xoffset, y - > sw->yoffset)); } > > XFree(image); > } > |