That code forgets to check that XRenderFindVisualFormat returns non-NULL. I committed a fix.
Eric On 2011-11-04, at 2:12 AM, Sebastian Reitenbach wrote: > > On Thursday, November 3, 2011 18:20 CET, "Sebastian Reitenbach" > <[email protected]> wrote: > >> Hi, >> >> with my adventures on getting gnustep to work on the sparc64 OpenBSD >> platform, and even with the warnings I still get with -base, I thought I >> compile a couple of apps, and try how it works. However, all segfault in the >> same spot in gnustep-back, below an example of Affiche. I use gnustep from >> svn, together with libobjc2, using cairo backend. > > I'm logged in via ssh -X in case it matters. > > Sebastian > > >> >> (gdb) r >> Starting program: /usr/local/bin/Affiche >> 2011-11-03 18:06:17.840 Affiche[26421] Did not find correct version of >> backend (libgnustep-back-020.bundle), falling back to std >> (libgnustep-back.bundle). >> >> Program received signal SIGSEGV, Segmentation fault. >> 0x0000000212716348 in bestContext (dpy=0x2051f6db0, screen_number=0, >> context=0x20a35ff00) at context.c:841 >> 841 if ((pictFormat->type == PictTypeDirect) >> (gdb) thread apply all bt >> (gdb) bt >> #0 0x0000000212716348 in bestContext (dpy=0x2051f6db0, screen_number=0, >> context=0x20a35ff00) at context.c:841 >> #1 0x0000000212715ea0 in RCreateContext (dpy=0x2051f6db0, screen_number=0, >> attribs=0x0) at context.c:701 >> #2 0x00000002127226a0 in -[XGScreenContext initForDisplay:screen:] >> (self=0x207fd6c28, _cmd=0x2129859b0, dpy=0x2051f6db0, >> screen_number=0) at XGServer.m:180 >> #3 0x00000002127244dc in -[XGServer _screenContextForScreen:] >> (self=0x20fa6fc08, _cmd=0x2129859c0, screen_number=0) >> at XGServer.m:519 >> #4 0x00000002127245dc in -[XGServer xrContextForScreen:] (self=0x20fa6fc08, >> _cmd=0x212988b68, screen_number=0) at XGServer.m:534 >> #5 0x0000000212739ed8 in -[XGServer(WindowOps) window::::] >> (self=0x20fa6fc08, _cmd=0x2027e0b10, frame= >> {origin = {x = 0, y = 0}, size = {width = 0, height = 0}}, >> type=NSBackingStoreRetained, style=64, screen=0) >> at XGServerWindow.m:1965 >> #6 0x00000002023852b8 in -[NSWindow _initBackendWindow] (self=0x205240e08, >> _cmd=0x2027e0c70) at NSWindow.m:916 >> #7 0x0000000202386678 in -[NSWindow >> initWithContentRect:styleMask:backing:defer:] (self=0x205240e08, >> _cmd=0x2027e0970, >> contentRect={origin = {x = 0, y = 0}, size = {width = 0, height = 0}}, >> aStyle=64, bufferingType=NSBackingStoreRetained, >> flag=0 '\0') at NSWindow.m:1063 >> #8 0x00000002023869e0 in -[NSWindow >> initWithContentRect:styleMask:backing:defer:screen:] (self=0x205240e08, >> _cmd=0x2026eae88, >> contentRect={origin = {x = 0, y = 0}, size = {width = 0, height = 0}}, >> aStyle=64, bufferingType=NSBackingStoreRetained, >> flag=0 '\0', aScreen=0x0) at NSWindow.m:1113 >> #9 0x0000000202055e68 in -[NSApplication(Private) _appIconInit] >> (self=0x205161708, _cmd=0x2026ea288) at NSApplication.m:3789 >> #10 0x0000000202044b6c in -[NSApplication _init] (self=0x205161708, >> _cmd=0x2026ea2a8) at NSApplication.m:921 >> #11 0x0000000210308d1c in -[NSObject performSelector:withObject:] >> (self=0x205161708, _cmd=0x21087fa28, aSelector=0x2026ea2a8, >> anObject=0x205161708) at NSObject.m:2011 >> #12 0x00000002103d1ff0 in -[NSObject(NSThreadPerformAdditions) >> performSelector:onThread:withObject:waitUntilDone:modes:] ( >> self=0x205161708, _cmd=0x21087fb68, aSelector=0x2026ea2a8, >> aThread=0x205160408, anObject=0x205161708, aFlag=1 '\001', >> anArray=0x211492748) at NSThread.m:1239 >> #13 0x00000002103d1e00 in -[NSObject(NSThreadPerformAdditions) >> performSelectorOnMainThread:withObject:waitUntilDone:modes:] ( >> self=0x205161708, _cmd=0x21087fb78, aSelector=0x2026ea2a8, >> anObject=0x205161708, aFlag=1 '\001', anArray=0x211492748) >> at NSThread.m:1194 >> #14 0x00000002103d1ea4 in -[NSObject(NSThreadPerformAdditions) >> performSelectorOnMainThread:withObject:waitUntilDone:] ( >> self=0x205161708, _cmd=0x2026ea2b8, aSelector=0x2026ea2a8, >> anObject=0x205161708, aFlag=1 '\001') at NSThread.m:1205 >> #15 0x0000000202044dd4 in -[NSApplication init] (self=0x205161708, >> _cmd=0x2026e9d88) at NSApplication.m:975 >> #16 0x0000000202044360 in +[NSApplication sharedApplication] >> (self=0x2026e90b0, _cmd=0x326c30) at NSApplication.m:847 >> #17 0x000000000010b178 in gnustep_base_user_main (argc=1, >> argv=0xfffffffffffd72e8, env=0xfffffffffffd72f8) at Affiche.m:678 >> #18 0x0000000210353310 in main (argc=1, argv=0xfffffffffffd72e8, >> env=0xfffffffffffd72f8) at NSProcessInfo.m:978 >> #19 0x0000000000101eac in _start () >> #20 0x0000000000101eac in _start () >> Previous frame identical to this frame (corrupt stack?) >> (gdb) frame 0 >> #0 0x0000000212716348 in bestContext (dpy=0x2051f6db0, screen_number=0, >> context=0x20a35ff00) at context.c:841 >> 841 if ((pictFormat->type == PictTypeDirect) >> (gdb) list >> 836 { >> 837 for (i=numvis-1, best = -1; i>=0; i--) >> 838 { >> 839 XRenderPictFormat* pictFormat = >> 840 XRenderFindVisualFormat (dpy, vinfo[i].visual); >> 841 if ((pictFormat->type == PictTypeDirect) >> 842 && (pictFormat->direct.alphaMask)) >> 843 { >> 844 best = i; >> 845 } >> (gdb) print dpy >> $1 = (Display *) 0x2051f6db0 >> (gdb) print vinfo >> $2 = (XVisualInfo *) 0x20c462000 >> (gdb) print i >> $3 = 0 >> (gdb) print numvis >> $4 = 1 >> (gdb) print vinfo[i].visual >> $5 = (Visual *) 0x200bd27c0 >> (gdb) print *vinfo[i].visual >> $6 = {ext_data = 0x0, visualid = 82, class = 4, red_mask = 16711680, >> green_mask = 65280, blue_mask = 255, bits_per_rgb = 8, >> map_entries = 256} >> (gdb) print *dpy >> $7 = <incomplete type> >> (gdb) >> >> _______________________________________________ >> Discuss-gnustep mailing list >> [email protected] >> https://lists.gnu.org/mailman/listinfo/discuss-gnustep > > > > > > _______________________________________________ > Discuss-gnustep mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/discuss-gnustep _______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
