Summary: | X 1.16.1 RC 1 segfaults and reports "XXX fail to create fbo" with Radeon HD 7970. | ||
---|---|---|---|
Product: | Mesa | Reporter: | John Steele Scott <toojays> |
Component: | Mesa core | Assignee: | mesa-dev |
Status: | RESOLVED NOTOURBUG | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | vebveb, wiml |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Complete Xorg log.
X server output with EGL_LOG_LEVEL=debug and -verbose 20 X startup with EGL debug info Another Xorg log with the failure Backtraces from att_incomplete() |
Description
John Steele Scott
2014-09-22 14:06:38 UTC
Created attachment 106681 [details]
Complete Xorg log.
Okay, I've figured out how to get a bit more debug information out of glamor (setting the environment variable GLAMOR_DEBUG=1), and have installed debug symbols. The following log message is shown twice before the segfault: glamor_pixmap_ensure_fb: glamor: Failed to create fbo, incomplete attachment The backtrace at the first of these points looks like: #0 glamor_pixmap_ensure_fb (fbo=fbo@entry=0x555556212e50) at ../../glamor/glamor_fbo.c:218 str = 0x7ffff13b66ab "incomplete attachment" status = 36054 err = 0 __PRETTY_FUNCTION__ = "glamor_pixmap_ensure_fb" __FUNCTION__ = "glamor_pixmap_ensure_fb" #1 0x00007ffff13ac2b5 in glamor_create_fbo_from_tex (glamor_priv=0x555555b24740, w=1024, h=1056, format=6408, tex=2, flag=261) at ../../glamor/glamor_fbo.c:250 fbo = 0x555556212e50 #2 0x00007ffff13837d8 in glamor_create_pixmap (screen=0x5555559d57e0, w=1024, h=1056, depth=32, usage=261) at ../../glamor/glamor.c:201 type = GLAMOR_MEMORY pixmap_priv = 0x555556212dd0 fbo = 0x8cd6 #3 0x00007ffff203ab01 in radeon_glamor_create_pixmap (screen=0x5555559d57e0, w=1024, h=1056, depth=32, usage=261) at ../../src/radeon_glamor.c:197 priv = 0x555555af5290 new_pixmap = 0x105 #4 0x00007ffff138bfc1 in glamor_realize_glyph_caches (pScreen=0x5555559d57e0) at ../../glamor/glamor_glyphs.c:332 depth = 32 pPictFormat = 0x555555a2b9c8 pixmap = 0x20 picture = 0x555555a2b9c8 component_alpha = 0 error = 0 formats = {134316032, 537036936} #5 0x00007ffff138277d in glamor_create_screen_resources (screen=0x5555559d57e0) at ../../glamor/glamor.c:305 ret = 1 #6 0x00007ffff20332d3 in RADEONCreateScreenResources_KMS (pScreen=0x5555559d57e0) at ../../src/radeon_kms.c:229 pScrn = 0x5555559d64b0 info = 0x5555559d7300 pixmap = <optimized out> #7 0x000055555561fc3e in xf86CrtcCreateScreenResources (screen=0x5555559d57e0) at ../../../../hw/xfree86/modes/xf86Crtc.c:709 scrn = <optimized out> config = <optimized out> #8 0x00005555555aef26 in dix_main (argc=3, argv=0x7fffffffe6a8, envp=<optimized out>) at ../../dix/main.c:223 pScreen = 0x5555559d57e0 i = 0 alwaysCheckForInput = {0, 1} #9 0x00007ffff5d13b45 in __libc_start_main (main=0x5555555994e0 <main>, argc=3, argv=0x7fffffffe6a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe698) at libc-start.c:287 result = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -8785920377037677806, 93824992515301, 140737488348832, 0, 0, 8785920376303360786, 8785898719497657106}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x55555571a810 <__libc_csu_init>, 0x7fffffffe6a8}, data = {prev = 0x0, cleanup = 0x0, canceltype = 1433511952}}} not_first_call = <optimized out> #10 0x000055555559950e in _start () No symbol table info available. The backtrace at the second looks like: #0 glamor_pixmap_ensure_fb (fbo=fbo@entry=0x555556219e50) at ../../glamor/glamor_fbo.c:218 str = 0x7ffff13b66ab "incomplete attachment" status = 36054 err = 0 __PRETTY_FUNCTION__ = "glamor_pixmap_ensure_fb" __FUNCTION__ = "glamor_pixmap_ensure_fb" #1 0x00007ffff13ac2b5 in glamor_create_fbo_from_tex (glamor_priv=glamor_priv@entry=0x555555b24740, w=2560, h=1440, format=6408, tex=tex@entry=3, flag=flag@entry=0) at ../../glamor/glamor_fbo.c:250 fbo = 0x555556219e50 #2 0x00007ffff1383192 in glamor_set_pixmap_texture (pixmap=pixmap@entry=0x5555561edb60, tex=3) at ../../glamor/glamor.c:103 screen = <optimized out> pixmap_priv = 0x555555ac7160 fbo = <optimized out> #3 0x00007ffff137fe49 in glamor_egl_create_textured_pixmap (pixmap=pixmap@entry=0x5555561edb60, handle=handle@entry=49, stride=stride@entry=10240) at ../../../../glamor/glamor_egl.c:314 screen = 0x5555559d57e0 scrn = <optimized out> pixmap_priv = 0x55555622d0d0 texture = 3 name = <optimized out> ret = 0 __PRETTY_FUNCTION__ = "glamor_egl_create_textured_pixmap" #4 0x00007ffff138003d in glamor_egl_create_textured_screen (screen=screen@entry=0x5555559d57e0, handle=handle@entry=49, stride=stride@entry=10240) at ../../../../glamor/glamor_egl.c:232 scrn = 0x5555559d64b0 pixmap_priv = 0x55555622d0d0 screen_pixmap = 0x5555561edb60 #5 0x00007ffff138013d in glamor_egl_create_textured_screen_ext (screen=screen@entry=0x5555559d57e0, handle=49, stride=10240, back_pixmap=back_pixmap@entry=0x0) at ../../../../glamor/glamor_egl.c:254 scrn = <optimized out> #6 0x00007ffff203a6ec in radeon_glamor_create_screen_resources (screen=screen@entry=0x5555559d57e0) at ../../src/radeon_glamor.c:67 scrn = 0x5555559d64b0 info = 0x5555559d7300 #7 0x00007ffff203343a in RADEONCreateScreenResources_KMS (pScreen=0x5555559d57e0) at ../../src/radeon_kms.c:258 pScrn = <optimized out> info = 0x5555559d7300 pixmap = <optimized out> #8 0x000055555561fc3e in xf86CrtcCreateScreenResources (screen=0x5555559d57e0) at ../../../../hw/xfree86/modes/xf86Crtc.c:709 scrn = <optimized out> config = <optimized out> #9 0x00005555555aef26 in dix_main (argc=3, argv=0x7fffffffe6a8, envp=<optimized out>) at ../../dix/main.c:223 pScreen = 0x5555559d57e0 i = 0 alwaysCheckForInput = {0, 1} #10 0x00007ffff5d13b45 in __libc_start_main (main=0x5555555994e0 <main>, argc=3, argv=0x7fffffffe6a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe698) at libc-start.c:287 result = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -8785920377037677806, 93824992515301, 140737488348832, 0, 0, 8785920376303360786, 8785898719497657106}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x55555571a810 <__libc_csu_init>, 0x7fffffffe6a8}, data = {prev = 0x0, cleanup = 0x0, canceltype = 1433511952}}} not_first_call = <optimized out> #11 0x000055555559950e in _start () No symbol table info available. Then I guess the segfault itself is pretty boring since we already know the fbo is NULL. Program received signal SIGSEGV, Segmentation fault. 0x00007ffff13833b0 in glamor_set_screen_pixmap (screen_pixmap=screen_pixmap@entry=0x5555561edb60, back_pixmap=0x0) at ../../glamor/glamor.c:122 122 glamor_priv->screen_fbo = pixmap_priv->base.fbo->fb; (gdb) bt #0 0x00007ffff13833b0 in glamor_set_screen_pixmap (screen_pixmap=screen_pixmap@entry=0x5555561edb60, back_pixmap=0x0) at ../../glamor/glamor.c:122 #1 0x00007ffff1380060 in glamor_egl_create_textured_screen (screen=screen@entry=0x5555559d57e0, handle=handle@entry=49, stride=stride@entry=10240) at ../../../../glamor/glamor_egl.c:239 #2 0x00007ffff138013d in glamor_egl_create_textured_screen_ext (screen=screen@entry=0x5555559d57e0, handle=49, stride=10240, back_pixmap=back_pixmap@entry=0x0) at ../../../../glamor/glamor_egl.c:254 #3 0x00007ffff203a6ec in radeon_glamor_create_screen_resources (screen=screen@entry=0x5555559d57e0) at ../../src/radeon_glamor.c:67 #4 0x00007ffff203343a in RADEONCreateScreenResources_KMS (pScreen=0x5555559d57e0) at ../../src/radeon_kms.c:258 #5 0x000055555561fc3e in xf86CrtcCreateScreenResources (screen=0x5555559d57e0) at ../../../../hw/xfree86/modes/xf86Crtc.c:709 #6 0x00005555555aef26 in dix_main (argc=3, argv=0x7fffffffe6a8, envp=<optimized out>) at ../../dix/main.c:223 #7 0x00007ffff5d13b45 in __libc_start_main (main=0x5555555994e0 <main>, argc=3, argv=0x7fffffffe6a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe698) at libc-start.c:287 #8 0x000055555559950e in _start () (gdb) p pixmap_priv->base.fbo $22 = (glamor_pixmap_fbo *) 0x0 The question is why the FBO creation fails. Reassigning to Mesa core for now. Can you attach the stderr output from running Xorg with the environment variable EGL_LOG_LEVEL=debug? (In reply to comment #3) > The question is why the FBO creation fails. Reassigning to Mesa core for now. > > Can you attach the stderr output from running Xorg with the environment > variable EGL_LOG_LEVEL=debug? Thanks for responding. It looks like this: root@kano:/home/toojays# GLAMOR_DEBUG=1 EGL_LOG_LEVEL=debug X X.Org X Server 1.16.0.901 (1.16.1 RC 1) Release Date: 2014-09-15 X Protocol Version 11, Revision 0 Build Operating System: Linux 3.14-2-amd64 x86_64 Debian Current Operating System: Linux kano 3.16-2-amd64 #1 SMP Debian 3.16.3-2 (2014-09-20) x86_64 Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.16-2-amd64 root=UUID=cb52059d-d262-4051-8a0d-69cba808afb9 ro quiet Build Date: 16 September 2014 02:45:53PM xorg-server 2:1.16.0.901-1 (http://www.debian.org/support) Current version of pixman: 0.32.6 Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. (==) Log file: "/var/log/Xorg.0.log", Time: Thu Sep 25 18:59:05 2014 (==) Using system config directory "/usr/share/X11/xorg.conf.d" (II) [KMS] Kernel modesetting enabled. libEGL debug: Native platform type: drm (autodetected) libEGL debug: EGL search path is /usr/lib/x86_64-linux-gnu/egl libEGL debug: added /usr/lib/x86_64-linux-gnu/egl/egl_gallium.so to module array libEGL debug: added egl_dri2 to module array libEGL debug: dlopen(/usr/lib/x86_64-linux-gnu/egl/egl_gallium.so) libEGL info: use DRM for display 0x7f80bda34720 libEGL debug: EGL user error 0x3001 (EGL_NOT_INITIALIZED) in eglInitialize(no usable display) libEGL debug: the best driver is DRI2 glamor_pixmap_ensure_fb: glamor: Failed to create fbo, incomplete attachment glamor_pixmap_ensure_fb: glamor: Failed to create fbo, incomplete attachment XXX fail to create fbo. (EE) (EE) Backtrace: (EE) 0: X (xorg_backtrace+0x56) [0x7f80bb978af6] (EE) 1: X (0x7f80bb7c3000+0x1b9cd9) [0x7f80bb97ccd9] (EE) 2: /lib/x86_64-linux-gnu/libc.so.6 (0x7f80b94b6000+0x350f0) [0x7f80b94eb0f0] (EE) 3: /usr/lib/xorg/modules/libglamoregl.so (glamor_set_screen_pixmap+0x60) [0x7f80b4f513b0] (EE) 4: /usr/lib/xorg/modules/libglamoregl.so (glamor_egl_create_textured_screen+0xa0) [0x7f80b4f4e060] (EE) 5: /usr/lib/xorg/modules/libglamoregl.so (glamor_egl_create_textured_screen_ext+0x3d) [0x7f80b4f4e13d] (EE) 6: /usr/lib/xorg/modules/drivers/radeon_drv.so (0x7f80b57b3000+0x4b6ec) [0x7f80b57fe6ec] (EE) 7: /usr/lib/xorg/modules/drivers/radeon_drv.so (0x7f80b57b3000+0x4443a) [0x7f80b57f743a] (EE) 8: X (0x7f80bb7c3000+0xcbc3e) [0x7f80bb88ec3e] (EE) 9: X (0x7f80bb7c3000+0x5af26) [0x7f80bb81df26] (EE) 10: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xf5) [0x7f80b94d7b45] (EE) 11: X (0x7f80bb7c3000+0x4550e) [0x7f80bb80850e] (EE) (EE) Segmentation fault at address 0x1c (EE) Fatal server error: (EE) Caught signal 11 (Segmentation fault). Server aborting (EE) (EE) Please consult the The X.Org Foundation support at http://wiki.x.org for help. (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information. (EE) (II) AIGLX: Suspending AIGLX clients for VT switch (EE) Server terminated with error (1). Closing log file. Aborted (core dumped) Created attachment 106844 [details] X server output with EGL_LOG_LEVEL=debug and -verbose 20 I'm attaching the output of root@kano:/home/toojays# GLAMOR_DEBUG=1 EGL_LOG_LEVEL=debug startx -- -verbose 20 > startx-elg-debug.txt 2>&1 which is more complete than what I put in comment 4. Created attachment 108659 [details] X startup with EGL debug info I am experiencing basically the same issue with my HD4670 when trying to enable Glamor acceleration. I'll attach a log produced by the command line mentioned in comment 5. A noticeable difference is the "AIGLX error: r600 does not export required DRI extension" line and related. Created attachment 110440 [details]
Another Xorg log with the failure
Hi there, I just experienced this bug myself on a Radeon 7750, and I've just uploaded my Xorg.0.log. The strange thing was that it surfaced after a reboot. I traced my apt logs, and I hadn't installed/upgraded any X packages since the last reboot. I tried upgrading/downgrading X to version 1.16.1, to no avail. I'm using the latest versions of Mesa in Debian Testing. I also compiled the latest kernel. I also had a Radeon 6450 lying around, and I swapped the cards without changing the system software/config from the state which had caused the error in the Xorg.0.log which I attached. The exact same system then ran perfectly fine. Is there any sense of where this bug traces to? Do you get more information with the environment variable MESA_DEBUG=incomplete_fbo ? If not, make sure Mesa is built with --enable-debug. (Continuing this bug report from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=767356) I rebuilt with --enable-debug and got this output. I'm not sure what info is useful, so I'm also attaching a file with stack traces from the places where att_incomplete() was called. (gdb) set env MESA_DEBUG=incomplete_fbo (gdb) set env GLAMOR_DEBUG=1 (gdb) set env EGL_LOG_LEVEL=debug (gdb) run -keeptty X.Org X Server 1.16.2.901 (1.16.3 RC 1) Release Date: 2014-12-09 [...snip...] (==) Log file: "/var/log/Xorg.0.log", Time: Wed Dec 17 23:25:32 2014 (==) Using system config directory "/usr/share/X11/xorg.conf.d" (II) [KMS] Kernel modesetting enabled. [New Thread 0x7fffed0f6700 (LWP 5888)] libEGL debug: Native platform type: drm (autodetected) libEGL debug: EGL search path is /usr/lib/x86_64-linux-gnu/egl libEGL debug: added egl_dri2 to module array libEGL debug: the best driver is DRI2 Mesa: attachment incomplete: teximage width/height=0 Mesa: FBO Incomplete: color attachment incomplete [0] glamor_pixmap_ensure_fb: glamor: Failed to create fbo, incomplete attachment Mesa: attachment incomplete: teximage width/height=0 Mesa: FBO Incomplete: color attachment incomplete [0] glamor_pixmap_ensure_fb: glamor: Failed to create fbo, incomplete attachment XXX fail to create fbo. Program received signal SIGSEGV, Segmentation fault. 0x00007ffff13733a0 in glamor_set_screen_pixmap (screen_pixmap=screen_pixmap@entry=0x55555623db10, back_pixmap=0x0) at ../../glamor/glamor.c:122 122 ../../glamor/glamor.c: No such file or directory. Created attachment 110973 [details]
Backtraces from att_incomplete()
(In reply to Wim Lewis from comment #10) > Mesa: attachment incomplete: teximage width/height=0 Looks like something goes wrong when creating the texture, so at least one of its dimensions is 0 when creating the FBO. The most likely candidate seems glEGLImageTargetTexture2DOES() failing in glamor_create_texture_from_image(). Can you trace execution around that to see if you find anything odd? It might also be useful to set a breakpoint on _mesa_error, which should be hit if glamor triggers any GL API errors. Looking at: " libEGL debug: dlopen(/usr/lib/x86_64-linux-gnu/egl/egl_gallium.so) libEGL info: use DRM for display 0x7f80bda34720 libEGL debug: EGL user error 0x3001 (EGL_NOT_INITIALIZED) in eglInitialize(no usable display) " It seems that the problem is the drm egl platform initialization. egl_gallium is known to have some bugs the normal egl_dri2 implementation doesn't have. Try build mesa without egl_gallium. (In reply to Michel Dänzer from comment #12) Well, the place it seemed to be going off the rails was in dri2_lookup_egl_image() in dri2.c; the call to loader->lookupEGLImage() was returning NULL. That pointed into libgbm1, so I installed the debug-symbols package for libgbm1 ... which involved upgrading libgbm1 from 10.2.5-1 to 10.3.2-1 ... which fixed the problem; X11 works again for me. So I'd say this is a Debian packaging bug: perhaps the other parts of Mesa need to indicate a dependency on a newer version of libgbm1 (currently libgbm is only pulled in by libegl1-mesa which requires libgbm1 >= 7.11~1), or whatever kernel facility gbm talks to needs to indicate it breaks old libgbm1 (if this has something to do with the 3.14.x->3.16.0 kernel; it looks like everyone hitting this problem is also running 3.16.x)... I'm completely unfamiliar with the dependencies in this area. Sorry for taking up your time with what turned out to be PEBKAC (in my case at least)! I notice that the report from Yaroslav Halchenko on the Debian BTS also indicates he is running an older libgbm1 (10.2.8-1 in his case) so perhaps this is the cause of his problem as well. (gdb) bt #0 dri2_lookup_egl_image (screen=0x5555559ec7a0, handle=0x5555560daff0) at ../../../../../../src/gallium/state_trackers/dri/dri2.c:671 #1 0x00007fffefe7d1b5 in dri_get_egl_image (smapi=<optimized out>, egl_image=<optimized out>, stimg=0x7fffffffe170) at ../../../../../../src/gallium/state_trackers/dri/dri_screen.c:308 #2 0x00007fffefdb9b0a in st_manager_get_egl_image_surface (st=0x555555b012a0, eglimg=<optimized out>) at ../../../../src/mesa/state_tracker/st_manager.c:839 #3 0x00007fffefd92536 in st_egl_image_target_texture_2d (ctx=0x555555ad2670, target=1443737584, texObj=0x55555627d3c0, texImage=0x55555627b1b0, image_handle=0x5555560daff0) at ../../../../src/mesa/state_tracker/st_cb_eglimage.c:148 #4 0x00007fffefd2e013 in _mesa_EGLImageTargetTexture2DOES (target=3553, image=0x5555560daff0) at ../../../../src/mesa/main/teximage.c:3451 #5 0x00007ffff136f99d in glamor_create_texture_from_image ( screen=screen@entry=0x5555559d8800, image=image@entry=0x5555560daff0, texture=texture@entry=0x7fffffffe284) at ../../../../glamor/glamor_egl.c:174 Looks like this needs to be resolved downstream after all. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.