Using mesa git e7f5d19a1106351f2db8f62f59f51be86eaa93df kernel 2.6.36 (kernel-2.6.35.6-37.fc13.x86_64) libdrm git xf86-video-ati git I'm able to duplicate a crash in r600g pretty reliably with this command ./xeglthreads -n 6 -t -l it gives an error: r600_priv.h:184: radeon_bo_unmap: Assertion `bo->map_count >= 0' failed. works ok with -n values < 6, but real performance drop between 4 & 5
Seems to also happen with this command ./glthreads -n 3 -t glthreads: No explict locking. glthreads: Single display connection. XInitThreads() returned 1 (success) glthreads: creating windows glthreads: creating threads glthreads: Created thread 0x7f83360d3700 glthreads: Created thread 0x7f83358d2700 glthreads: Created thread 0x7f8327fff700 glthreads: 1: GL_RENDERER = Gallium 0.4 on RV635 glthreads: 0: GL_RENDERER = Gallium 0.4 on RV635 glthreads: 2: GL_RENDERER = Gallium 0.4 on RV635 glthreads: r600_priv.h:184: radeon_bo_unmap: Assertion `bo->map_count >= 0' failed.
with glthreads you need to press the arrow keys to make it happen
backtrace as requested by tilman run -n 6 -t -l Starting program: /home/kdekorte/git/mesa/progs/egl/xeglthreads -n 6 -t -l [Thread debugging using libthread_db enabled] xeglthreads: Using explicit locks around Xlib calls. xeglthreads: Single display connection. xeglthreads: creating windows xeglthreads: creating threads [New Thread 0x7ffff5ae0700 (LWP 29394)] xeglthreads: Created thread 0x7ffff5ae0700 [New Thread 0x7ffff52df700 (LWP 29395)] xeglthreads: Created thread 0x7ffff52df700 [New Thread 0x7ffff4ade700 (LWP 29396)] xeglthreads: Created thread 0x7ffff4ade700 [New Thread 0x7fffeffff700 (LWP 29397)] xeglthreads: Created thread 0x7fffeffff700 [New Thread 0x7fffef7fe700 (LWP 29398)] xeglthreads: Created thread 0x7fffef7fe700 [New Thread 0x7fffeeffd700 (LWP 29399)] xeglthreads: Created thread 0x7fffeeffd700 xeglthreads: 0: GL_RENDERER = Gallium 0.4 on RV635 xeglthreads: 4: GL_RENDERER = Gallium 0.4 on RV635 xeglthreads: 3: GL_RENDERER = Gallium 0.4 on RV635 xeglthreads: 2: GL_RENDERER = Gallium 0.4 on RV635 xeglthreads: 1: GL_RENDERER = Gallium 0.4 on RV635 xeglthreads: 5: GL_RENDERER = Gallium 0.4 on RV635 xeglthreads: r600_priv.h:184: radeon_bo_unmap: Assertion `bo->map_count >= 0' failed. Program received signal SIGABRT, Aborted. [Switching to Thread 0x7fffef7fe700 (LWP 29398)] 0x0000003f0e634065 in raise () from /lib64/libc.so.6 Missing separate debuginfos, use: debuginfo-install expat-2.0.1-10.fc13.x86_64 glibc-2.12.90-18.x86_64 libX11-1.3.4-3.fc14.x86_64 libXau-1.0.6-1.fc14.x86_64 libXdamage-1.1.3-1.fc14.x86_64 libXext-1.1.2-2.fc14.x86_64 libXfixes-4.0.5-1.fc14.x86_64 libXxf86vm-1.1.0-1.fc13.x86_64 libdrm-2.4.23-0.1.20101019.fc14.x86_64 libgcc-4.5.1-4.fc14.x86_64 libstdc++-4.5.1-4.fc14.x86_64 libtalloc-2.0.1-1.fc13.x86_64 libv4l-0.8.1-1.fc14.x86_64 libxcb-1.7-1.fc14.x86_64 (gdb) bt #0 0x0000003f0e634065 in raise () from /lib64/libc.so.6 #1 0x0000003f0e635a16 in abort () from /lib64/libc.so.6 #2 0x0000003f0e62c8a5 in __assert_fail () from /lib64/libc.so.6 #3 0x00007ffff76e4653 in radeon_bo_unmap (_mgr=<value optimized out>) at r600_priv.h:184 #4 radeon_bo_pbmgr_flush_maps (_mgr=<value optimized out>) at radeon_bo_pb.c:264 #5 0x00007ffff7730b91 in r600_context_flush (ctx=0x1bc6f30) at r600_hw_context.c:1085 #6 0x00007ffff6f96468 in st_context_flush (stctxi=<value optimized out>, flags=9, fence=<value optimized out>) at state_tracker/st_manager.c:508 #7 0x00007ffff7968971 in egl_g3d_swap_buffers (drv=<value optimized out>, dpy=<value optimized out>, surf=0x2156820) at common/egl_g3d_api.c:602 #8 0x00007ffff7bb789c in eglSwapBuffers (dpy=0x612ba0, surface=0x2156820) at eglapi.c:681 #9 0x000000000040310f in draw_loop (p=0x604280) at xeglthreads.c:301 #10 thread_function (p=0x604280) at xeglthreads.c:567 #11 0x0000003f0f206d5b in start_thread () from /lib64/libpthread.so.0 #12 0x0000003f0e6e427d in clone () from /lib64/libc.so.6
gdb> thread apply all bt Thread 7 (Thread 0x7fffeeffd700 (LWP 29399)): #0 0x0000003f0f20e1ac in __lll_lock_wait () from /lib64/libpthread.so.0 #1 0x0000003f0f2094a4 in _L_lock_997 () from /lib64/libpthread.so.0 #2 0x0000003f0f2092ba in pthread_mutex_lock () from /lib64/libpthread.so.0 #3 0x00000000004032cc in draw_loop (p=0x6042c8) at xeglthreads.c:249 #4 thread_function (p=0x6042c8) at xeglthreads.c:567 #5 0x0000003f0f206d5b in start_thread () from /lib64/libpthread.so.0 #6 0x0000003f0e6e427d in clone () from /lib64/libc.so.6 Thread 6 (Thread 0x7fffef7fe700 (LWP 29398)): #0 0x0000003f0e634065 in raise () from /lib64/libc.so.6 #1 0x0000003f0e635a16 in abort () from /lib64/libc.so.6 #2 0x0000003f0e62c8a5 in __assert_fail () from /lib64/libc.so.6 #3 0x00007ffff76e4653 in radeon_bo_unmap (_mgr=<value optimized out>) at r600_priv.h:184 #4 radeon_bo_pbmgr_flush_maps (_mgr=<value optimized out>) at radeon_bo_pb.c:264 #5 0x00007ffff7730b91 in r600_context_flush (ctx=0x1bc6f30) at r600_hw_context.c:1085 #6 0x00007ffff6f96468 in st_context_flush (stctxi=<value optimized out>, flags=9, fence=<value optimized out>) at state_tracker/st_manager.c:508 #7 0x00007ffff7968971 in egl_g3d_swap_buffers (drv=<value optimized out>, dpy=<value optimized out>, surf=0x2156820) at common/egl_g3d_api.c:602 #8 0x00007ffff7bb789c in eglSwapBuffers (dpy=0x612ba0, surface=0x2156820) at eglapi.c:681 #9 0x000000000040310f in draw_loop (p=0x604280) at xeglthreads.c:301 #10 thread_function (p=0x604280) at xeglthreads.c:567 #11 0x0000003f0f206d5b in start_thread () from /lib64/libpthread.so.0 #12 0x0000003f0e6e427d in clone () from /lib64/libc.so.6 Thread 5 (Thread 0x7fffeffff700 (LWP 29397)): #0 0x0000003f0e6ad5ed in nanosleep () from /lib64/libc.so.6 #1 0x0000003f0e6dce14 in usleep () from /lib64/libc.so.6 #2 0x0000000000402bba in draw_loop (p=0x604238) at xeglthreads.c:307 #3 thread_function (p=0x604238) at xeglthreads.c:567 #4 0x0000003f0f206d5b in start_thread () from /lib64/libpthread.so.0 #5 0x0000003f0e6e427d in clone () from /lib64/libc.so.6 Thread 4 (Thread 0x7ffff4ade700 (LWP 29396)): #0 0x0000003f0f20e1ac in __lll_lock_wait () from /lib64/libpthread.so.0 #1 0x0000003f0f2094a4 in _L_lock_997 () from /lib64/libpthread.so.0 #2 0x0000003f0f2092ba in pthread_mutex_lock () from /lib64/libpthread.so.0 ---Type <return> to continue, or q <return> to quit--- #3 0x000000000040319c in draw_loop (p=0x6041f0) at xeglthreads.c:299 #4 thread_function (p=0x6041f0) at xeglthreads.c:567 #5 0x0000003f0f206d5b in start_thread () from /lib64/libpthread.so.0 #6 0x0000003f0e6e427d in clone () from /lib64/libc.so.6 Thread 3 (Thread 0x7ffff52df700 (LWP 29395)): #0 0x0000003f0f20e1ac in __lll_lock_wait () from /lib64/libpthread.so.0 #1 0x0000003f0f2094a4 in _L_lock_997 () from /lib64/libpthread.so.0 #2 0x0000003f0f2092ba in pthread_mutex_lock () from /lib64/libpthread.so.0 #3 0x000000000040319c in draw_loop (p=0x6041a8) at xeglthreads.c:299 #4 thread_function (p=0x6041a8) at xeglthreads.c:567 #5 0x0000003f0f206d5b in start_thread () from /lib64/libpthread.so.0 #6 0x0000003f0e6e427d in clone () from /lib64/libc.so.6 Thread 2 (Thread 0x7ffff5ae0700 (LWP 29394)): #0 0x0000003f0f20e1ac in __lll_lock_wait () from /lib64/libpthread.so.0 #1 0x0000003f0f2094a4 in _L_lock_997 () from /lib64/libpthread.so.0 #2 0x0000003f0f2092ba in pthread_mutex_lock () from /lib64/libpthread.so.0 #3 0x00000000004032cc in draw_loop (p=0x604160) at xeglthreads.c:249 #4 thread_function (p=0x604160) at xeglthreads.c:567 #5 0x0000003f0f206d5b in start_thread () from /lib64/libpthread.so.0 #6 0x0000003f0e6e427d in clone () from /lib64/libc.so.6 Thread 1 (Thread 0x7ffff7ba7740 (LWP 29391)): #0 0x0000003f0e6ad5ed in nanosleep () from /lib64/libc.so.6 #1 0x0000003f0e6dce14 in usleep () from /lib64/libc.so.6 #2 0x0000000000402596 in event_loop (argc=<value optimized out>, argv=<value optimized out>) at xeglthreads.c:389 #3 main (argc=<value optimized out>, argv=<value optimized out>) at xeglthreads.c:743
Appears to be fixed with mesa git as of 12/21/10 and kernel 2.6.37-rc6
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.