The XServer randomly freezes for a few seconds or sometimes even 1-2 minutes. I cannot move the mouse, and the screen does not update. I have a HD4850 card running on a 3.12.6-1.g080d0df-desktop SMP PREEMPT x86_64 kernel with Mesa 10.0.1 (both from openSuSE packages). These freezes also happen with the default 3.11 kernel, I upgraded in the hope of it being fixed, but the issue is still present. These issues started after the upgrade to openSuSE 13.1 which has a 3.11 kernel instead of the previous 3.7 kernel. The Mesa version did not change, I was always running the latest released version. My guess is it has something to do with the r600 kernel changes in 3.8+. During these freeze periods I can ssh into my system and top shows no CPU usage, so the XServer seems to be sleeping instead of being in a busy loop. dmesg gives me no messages and /var/log/XOrg.0.log is also empty. I don't know how to get any more detailed logging output. If you provide me with the necessary environment variables/kernel parameters I will give you these logs. Not sure if this helps, but most of the time the freeze happens when I open a new tab in firefox or switch to a different one. However it also happens at random intervals using other programs. It can sometimes take quite a long time until this freeze happens, however once it has occured once, it usually happens again after a short timespan (1-2 minutes or even less). Is it possible to debug the XServer just like a normal program using gdb? If yes I will try to provide a useful backtrace once the next longer freeze happens
Please attach your xorg log and dmesg output. Any chance you could bisect?
Created attachment 92092 [details] logs Bisecting is quite tricky, I have so far only used the binary kernel packages. I can try, however it will probably take a long time until I find something useful if at all. I am not sure when I can call a version good because sometimes the system can run fine for multiple hours and only then start having these freezes. I currently don't have the time to bisect, so I was hoping there would be some kernel parameters to increase verbosity. Would running a debug kernel be of any use?
I have now upgraded to Mesa 10.0.2 and it is MUCH better. Freeze only happens very rarely now. Maybe some unrelated change made a race condition that causes this very unlikely. Sadly still don't have the time to bisect the kernel.
I recently had another freeze and was able to attach gdb via ssh, this is the backtrace I got: Thread 2 (Thread 0x7fca267f1980 (LWP 868)): #0 0x00007fca247161e7 in ioctl () at ../sysdeps/unix/syscall-template.S:81 No locals. #1 0x00007fca257e1da4 in drmIoctl (fd=10, request=request@entry=3223348317, arg=arg@entry=0x7fff56fbe6b0) at xf86drm.c:167 ret = <optimized out> #2 0x00007fca257e414f in drmCommandWriteRead (fd=<optimized out>, drmCommandIndex=drmCommandIndex@entry=29, data=data@entry=0x7fff56fbe6b0, size=size@entry=32) at xf86drm.c:2451 request = 3223348317 #3 0x00007fca1ff12463 in bo_open (bom=0x1ba44e0, handle=0, size=121397248, alignment=512, domains=4, flags=0) at radeon_bo_gem.c:108 args = { size = 121397248, alignment = 512, handle = 1737, initial_domain = 4, flags = 0 } bo = 0x2a4f140 r = <optimized out> #4 0x00007fca20169e08 in radeon_alloc_pixmap_bo (pScrn=pScrn@entry=0x1b9aca0, width=width@entry=3648, height=height@entry=8172, depth=depth@entry=32, usage_hint=usage_hint@entry=0, bitsPerPixel=bitsPerPixel@entry=32, new_pitch=new_pitch@entry=0x7fff56fbf55c, new_surface=new_surface@entry=0x2ae6600, new_tiling=new_tiling@entry=0x2ae65f8) at radeon_bo_helper.c:179 info = 0x1b9b3d0 pitch = 14848 base_align = <optimized out> size = <optimized out> heighta = <optimized out> cpp = 4 tiling = 0 surface = { npix_x = 3648, npix_y = 8176, npix_z = 1, blk_w = 1, blk_h = 1, blk_d = 1, array_size = 1, last_level = 0, bpe = 4, nsamples = 1, flags = 1114113, bo_size = 121397248, bo_alignment = 512, bankw = 0, bankh = 0, mtilea = 0, tile_split = 0, stencil_tile_split = 0, stencil_offset = 0, level = {{ offset = 0, slice_size = 121397248, npix_x = 3648, npix_y = 8176, npix_z = 1, nblk_x = 3712, nblk_y = 8176, nblk_z = 1, pitch_bytes = 14848, mode = 0 }, { offset = 0, slice_size = 0, npix_x = 0, npix_y = 0, npix_z = 0, nblk_x = 0, nblk_y = 0, nblk_z = 0, pitch_bytes = 0, mode = 0 } <repeats 31 times>}, stencil_level = {{ offset = 0, slice_size = 0, npix_x = 0, npix_y = 0, npix_z = 0, nblk_x = 0, nblk_y = 0, nblk_z = 0, pitch_bytes = 0, mode = 0 } <repeats 32 times>}, tiling_index = {0 <repeats 32 times>}, stencil_tiling_index = {0 <repeats 32 times>} } bo = <optimized out> domain = 4 #5 0x00007fca2013c527 in RADEONEXACreatePixmap2 (pScreen=<optimized out>, width=3648, height=8172, depth=32, usage_hint=0, bitsPerPixel=32, new_pitch=0x7fff56fbf55c) at radeon_exa.c:289 pScrn = 0x1b9aca0 info = <optimized out> new_priv = 0x2ae65f0 #6 0x00007fca1fd00068 in exaCreateDriverPixmap_mixed (pPixmap=0x2da61c0) at exa_migration_mixed.c:61 new_pitch = 0 pScreen = 0x1ba3b20 w = <optimized out> h = 8172 depth = <optimized out> bpp = <optimized out> usage_hint = 0 paddedWidth = 14592 #7 0x00007fca1fd002b0 in exaDoMigration_mixed (pixmaps=0x7fff56fbf660, npixmaps=-1071618979, can_accel=535884672) at exa_migration_mixed.c:104 pPixmap = 0x2da61c0 #8 0x00007fca1fd00dd4 in exaDoPutImage (depth=32, src_stride=14592, bits=0x36b7dc8 "", format=2, h=17, w=3648, y=0, x=0, pGC=0x20cc090, pDrawable=0x2da61c0) at exa_accel.c:179 pixmaps = {{ as_dst = 1, as_src = 0, pPix = 0x2da61c0, pReg = 0x58 }} nbox = <optimized out> pPix = <optimized out> xoff = 0 ret = 1 pClip = <optimized out> pbox = <optimized out> yoff = 1 bpp = 32 #9 exaPutImage (pDrawable=0x2da61c0, pGC=0x20cc090, depth=32, x=0, y=0, w=3648, h=17, leftPad=0, format=2, bits=0x36b7dc8 "") at exa_accel.c:233 No locals. #10 0x0000000000519819 in damagePutImage (pDrawable=0x2da61c0, pGC=0x20cc090, depth=32, x=0, y=0, w=<optimized out>, h=17, leftPad=0, format=2, pImage=0x36b7dc8 "") at damage.c:736 oldFuncs = 0x8162c0 <damageGCFuncs> #11 0x000000000043a189 in ProcPutImage (client=0x2a4d3f0) at dispatch.c:1968 pGC = 0x20cc090 pDraw = 0x2da61c0 length = <optimized out> lengthProto = <optimized out> tmpImage = 0x36b7dc8 "" stuff = 0x36b7db0 #12 0x000000000043d23e in Dispatch () at dispatch.c:433 clientReady = 0x1f600c0 result = <optimized out> client = 0x2a4d3f0 nready = 0 icheck = 0x820590 <checkForInput> start_tick = 178795 #13 0x000000000044106a in dix_main (argc=8, argv=0x7fff56fbf948, envp=<optimized out>) at main.c:294 i = <optimized out> alwaysCheckForInput = {0, 1} #14 0x00007fca24657be5 in __libc_start_main (main=0x42c5d0 <main>, argc=8, argv=0x7fff56fbf948, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff56fbf938) at libc-start.c:269 result = <optimized out> unwind_buf = { cancel_jmp_buf = {{ jmp_buf = {0, -524547331697071748, 4376024, 140734652741952, 0, 0, 524320866477091196, 516830052716587388}, mask_was_saved = 0 }}, priv = { pad = {0x0, 0x0, 0x59b9b0 <__libc_csu_init>, 0x7fff56fbf948}, data = { prev = 0x0, cleanup = 0x0, canceltype = 5880240 } } } not_first_call = <optimized out> #15 0x000000000042c601 in _start () at ../sysdeps/x86_64/start.S:122 No locals. Thread 1 (Thread 0x7fca19dfe700 (LWP 883)): #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 No locals. #1 0x00007fca1f515ec3 in ?? () from /usr/lib64/dri/r600_dri.so No symbol table info available. #2 0x00007fca1f515807 in ?? () from /usr/lib64/dri/r600_dri.so No symbol table info available. #3 0x00007fca259f20db in start_thread (arg=0x7fca19dfe700) at pthread_create.c:309 __res = <optimized out> pd = 0x7fca19dfe700 now = <optimized out> unwind_buf = { cancel_jmp_buf = {{ jmp_buf = {140505994225408, -524547331697071748, 0, 140506206253056, 140506085630131, 140505994225408, 516890606489905532, 516829586942404988}, mask_was_saved = 0 }}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = { prev = 0x0, cleanup = 0x0, canceltype = 0 } } } not_first_call = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #4 0x00007fca2471d90d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 No locals. Looks like it is somehow freezing when calling the DRM_RADEON_GEM_CREATE ioctl, but maybe gdb attaching causes the freeze to end and this is just afterwards. Hope it is of some use.
Does the freeze happens also with the stock openSUSE mesa (9.2.2)?
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/484.
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.