Bug 16812 - X hang at random while using GL app with mach64 with "timeout waiting for buffers"
Summary: X hang at random while using GL app with mach64 with "timeout waiting for buf...
Status: NEW
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/other (show other bugs)
Version: DRI git
Hardware: Other All
: medium critical
Assignee: Default DRI bug account
QA Contact:
Depends on:
Reported: 2008-07-23 01:03 UTC by Olivier Valentin
Modified: 2008-07-24 04:47 UTC (History)
0 users

See Also:
i915 platform:
i915 features:

The end of kern.log that seems to happen just before it hangs (6.04 KB, text/x-log)
2008-07-23 01:03 UTC, Olivier Valentin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Valentin 2008-07-23 01:03:35 UTC
Created attachment 17831 [details]
The end of kern.log that seems to happen just before it hangs

I compiled mach64 drm module from git, libopengl and the dri xorg module (still mach64).

After playing a little with an opengl app, the screen goes black and nothing responds. The machine seems not completely hang, but X prevents any further action but rebooting.

The kernel log ends with the following message:
Jul 23 07:55:04 chibchas kernel: [  451.014390] [drm:mach64_freelist_get] *ERROR* timeout waiting for buffers: ring head_addr: 0x50000e80 head: 928 tail: 1440
Jul 23 07:55:04 chibchas kernel: [  451.014400] [drm:mach64_dma_dispatch_vertex] *ERROR* couldn't get buffer

My dist/level is an unstable debian freshly dist-upgraded.

I use EXA.

The card is a "ATI Technologies Inc Rage Mobility P/M AGP 2x (rev 64)"

I'll try to give a X log.
Comment 1 Olivier Valentin 2008-07-23 01:25:28 UTC
I said screen goes black... I was wrong, it just freezes and I still see the last image of my game.

It happens even using XAA.

There is nothing special at the end of the X log (it seems to really hang and never realize it).
Comment 2 Olivier Valentin 2008-07-24 04:47:48 UTC
I located the failing condition in shared-core/mach64_dma.c:1652, from what I understand, the code waits up to 1 second to acquire a free message structure from a ring. But in my case this sometimes fails.

Then I tried to give a true value to MACH64_EXTRA_CHECKING in shared-core/mach64_drv.h, and since then, I was unable to make it freeze again.
Which looks quite insane since this flag is intended to detect problems and when it detects one, at least prints a message. But there is no message !
So this sounds like it fixes by "adding a delay" or by side effects !

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.