<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Crash in debug_backtrace_capture (src/gallium/auxiliary/util/u_debug_stack.c) when running mesa-demos using drm backend"
href="https://bugs.freedesktop.org/show_bug.cgi?id=57563">57563</a>
</td>
</tr>
<tr>
<th>Assignee</th>
<td>mesa-dev@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Summary</th>
<td>Crash in debug_backtrace_capture (src/gallium/auxiliary/util/u_debug_stack.c) when running mesa-demos using drm backend
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux (All)
</td>
</tr>
<tr>
<th>Reporter</th>
<td>geomatsi@gmail.com
</td>
</tr>
<tr>
<th>Hardware</th>
<td>x86 (IA32)
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Version</th>
<td>git
</td>
</tr>
<tr>
<th>Component</th>
<td>Other
</td>
</tr>
<tr>
<th>Product</th>
<td>Mesa
</td>
</tr></table>
<p>
<div>
<pre>Mesa crashes in function debug_backtrace_capture
(src/gallium/auxiliary/util/u_debug_stack.c) when running mesa-demos using drm
backend.
* Mesa version
git revision 97747ac88fe9207dde83b275a93ebcee3a84dc01
* Host/OS
Debian-7.0 (wheezy) running in VMwarePlayer-4.0.4 build-744019
* Mesa configuration command
# ./autogen.sh --enable-debug --enable-openvg --enable-gles1 --enable-gles2
--enable-gbm --enable-gallium-loader --enable-gallium-drm-loader
--enable-gallium-gbm --enable-gallium-egl --with-gallium-drivers=swrast,svga
--with-egl-platforms=wayland,fbdev,drm --with-dri-drivers=
--enable-shared-glapi --disable-driglx-direct
* Mesa configuration output
prefix: /usr/local
exec_prefix: ${prefix}
libdir: ${exec_prefix}/lib
includedir: ${prefix}/include
OpenGL: yes (ES1: yes ES2: yes)
OpenVG: yes
OSMesa: no
DRI drivers: no
DRI driver dir: ${libdir}/dri
GLX: DRI-based
EGL: yes
EGL platforms: wayland fbdev drm
EGL drivers: builtin:egl_glx builtin:egl_dri2 egl_gallium
EGL Gallium STs: $(VG_LIB) $(GL_LIB)
llvm: yes
llvm-config: /usr/local/bin/llvm-config
llvm-version: 3.0
Gallium: yes
Gallium dirs: auxiliary drivers state_trackers
Target dirs: dri-swrast dri-vmwgfx egl-static gbm
Winsys dirs: svga/drm sw sw/dri sw/fbdev sw/null sw/wayland
Driver dirs: galahad identity llvmpipe noop rbug softpipe svga
trace
Trackers dirs: dri egl gbm vega
Shared libs: yes
Static libs: no
Shared-glapi: yes
CFLAGS: -g -O2 -Wall -std=c99
-Werror=implicit-function-declaration -Werror=missing-prototypes
-fno-strict-aliasing -fno-builtin-memcmp -g -fPIC
CXXFLAGS: -g -O2 -Wall -fno-strict-aliasing -fno-builtin-memcmp
-g -fPIC
Macros: -D_GNU_SOURCE -DHAVE_PTHREAD -DDEBUG -DUSE_X86_ASM
-DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DHAVE_DLOPEN -DHAVE_POSIX_MEMALIGN
-DIN_DRI_DRIVER -DGLX_INDIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1
-DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -DHAVE_LLVM=0x0300
PYTHON2: python
Run 'make' to build Mesa
* Demo application output
Environement variables:
LIBGL_DEBUG=verbose
EGL_PLATFORM=drm
EGL_LOG_LEVEL=debug
Demo application output
# torus_screen
libEGL debug: Native platform type: drm (environment overwrite)
libEGL debug: EGL search path is /usr/local/lib/egl
libEGL debug: added /usr/local/lib/egl/egl_gallium.so to module array
libEGL debug: added egl_dri2 to module array
libEGL debug: added egl_glx to module array
libEGL debug: dlopen(/usr/local/lib/egl/egl_gallium.so)
libEGL info: use DRM for display (nil)
libEGL debug: the best driver is Gallium
EGL_VERSION = 1.4 (Gallium)
libEGL debug: the value (0x0) of attribute 0x3025 did not meet the criteria
(0x1)
libEGL debug: the value (0x0) of attribute 0x3025 did not meet the criteria
(0x1)
Segmentation fault
* Demo application gdb stacktrace
(gdb) run
Starting program:
/root/graphics-experiments/mesa-demos/src/egl/opengles1/torus_screen
[Thread debugging using libthread_db enabled]
Using host libthread_db library
"/lib/i386-linux-gnu/i686/cmov/libthread_db.so.1".
libEGL debug: Native platform type: drm (environment overwrite)
libEGL debug: EGL search path is /usr/local/lib/egl
libEGL debug: added /usr/local/lib/egl/egl_gallium.so to module array
libEGL debug: added egl_dri2 to module array
libEGL debug: added egl_glx to module array
libEGL debug: dlopen(/usr/local/lib/egl/egl_gallium.so)
libEGL info: use DRM for display (nil)
libEGL debug: the best driver is Gallium
EGL_VERSION = 1.4 (Gallium)
libEGL debug: the value (0x0) of attribute 0x3025 did not meet the criteria
(0x1)
libEGL debug: the value (0x0) of attribute 0x3025 did not meet the criteria
(0x1)
Program received signal SIGSEGV, Segmentation fault.
debug_backtrace_capture (backtrace=backtrace@entry=0x80c01fc,
start_frame=start_frame@entry=1, nr_frames=nr_frames@entry=8) at
util/u_debug_stack.c:52
52 __asm__ __volatile__("mov (%%ebp),%0": "=r" (frame_pointer));
(gdb) bt
#0 debug_backtrace_capture (backtrace=backtrace@entry=0x80c01fc,
start_frame=start_frame@entry=1, nr_frames=nr_frames@entry=8) at
util/u_debug_stack.c:52
#1 0xb4856790 in pb_debug_manager_create_buffer (_mgr=0x8055310, size=1024,
desc=0xbffff608) at pipebuffer/pb_bufmgr_debug.c:417
#2 0xb4805704 in vmw_svga_winsys_buffer_create (sws=0x8054e20, alignment=1,
usage=0, size=1024) at vmw_screen_svga.c:75
#3 0xb480ed7e in svga_winsys_buffer_create (svga=svga@entry=0x8069de8,
alignment=alignment@entry=1, usage=usage@entry=0, size=1024)
at svga_resource_buffer_upload.c:61
#4 0xb480d082 in svga_texture_transfer_map (pipe=0x8069de8, texture=0x80c0090,
level=0, usage=2, box=0xbffff7b0, ptransfer=0xbffff7ac)
at svga_resource_texture.c:272
#5 0xb48751e8 in u_transfer_map_vtbl (context=0x8069de8, resource=0x80c0090,
level=0, usage=2, box=0xbffff7b0, transfer=0xbffff7ac) at util/u_resource.c:35
#6 0xb483c17f in aaline_create_texture (aaline=0x80be6a0) at
draw/draw_pipe_aaline.c:454
#7 draw_install_aaline_stage (draw=0x8082a60, pipe=pipe@entry=0x8069de8) at
draw/draw_pipe_aaline.c:949
#8 0xb481ffe2 in svga_init_swtnl (svga=svga@entry=0x8069de8) at
svga_swtnl_draw.c:164
#9 0xb481352c in svga_context_create (screen=0x8055660, priv=0x0) at
svga_context.c:159
#10 0xb6440320 in st_api_create_context (stapi=0xb783f3e0, smapi=0x80623a0,
attribs=0xbffff9b4, error=0xbffff9b0, shared_stctxi=0x0)
at ../../src/mesa/state_tracker/st_manager.c:633
#11 0xb63d7389 in egl_g3d_create_context (drv=0x8051ff8, dpy=0x804d008,
conf=0x8068d88, share=0x0, attribs=0xbffffa80) at common/egl_g3d_api.c:176
#12 0xb7f8c0ae in eglCreateContext (dpy=0x804d008, config=0x8068d88,
share_list=share_list@entry=0x0, attrib_list=attrib_list@entry=0xbffffa80) at
eglapi.c:437
#13 0x0804a687 in _eglutCreateWindow (h=300, w=300, title=0x804aee5 "torus",
x=<optimized out>, y=<optimized out>) at eglut.c:162
#14 eglutCreateWindow (title=title@entry=0x804aee5 "torus") at eglut.c:317
#15 0x080493c7 in main (argc=1, argv=0xbffffbe4) at torus.c:435
Additional notes.
The following fixes/workaround have been found:
0. to build mesa without debug support :-)
1. to build with explicit compiler flag -fno-omit-frame-pointer
2. to apply the following patch
diff --git a/src/gallium/auxiliary/util/u_debug_stack.c
b/src/gallium/auxiliary/util/u_debug_stack.c
index 558b911..0a1e4e5 100644
--- a/src/gallium/auxiliary/util/u_debug_stack.c
+++ b/src/gallium/auxiliary/util/u_debug_stack.c
@@ -49,8 +49,7 @@ debug_backtrace_capture(struct debug_stack_frame *backtrace,
return;
#if defined(PIPE_CC_GCC) && defined(PIPE_ARCH_X86)
- __asm__ __volatile__("mov (%%ebp),%0": "=r" (frame_pointer));
- frame_pointer = (const void **)frame_pointer[0];
+ frame_pointer = ((const void **)__builtin_frame_address(1));
#elif defined(PIPE_CC_GCC)
frame_pointer = ((const void **)__builtin_frame_address(1));
#elif defined(PIPE_CC_MSVC) && defined(PIPE_ARCH_X86)</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>