http://bugs.freedesktop.org/show_bug.cgi?id=21513

           Summary: radeon-rewrite: r200 glDrawArrays without shaders fails
           Product: DRI
           Version: DRI CVS
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: DRM/Radeon
        AssignedTo: dri-devel@lists.sourceforge.net
        ReportedBy: stefandoesin...@gmx.at


Calling glDrawArrays without having a shader set fails on my Radeon Mobility
9000. This can be reproduced in many games, for example Extreme Tuxracer. The
game crashes when loading a track. Sometimes the game crashes, sometimes the X
server crashes. The problem also occurs with other programs like Wine. Using
immediate mode glBegin()/glEnd() drawing works.

The crash occurs with and without using GL vertex buffer objects.

I managed to get a backtrace from a DirectX sample running in Wine:

wine: Unhandled page fault on read access to 0x0000001c at address 0x7dd560a1
(t                                                                             
           hread 0009), starting debugger...
Unhandled exception: page fault on read access to 0x0000001c in 32-bit code
(0x7dd560a1).
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
 EIP:7dd560a1 ESP:00414248 EBP:00414280 EFLAGS:00210202(   - 00      - -RI1)
 EAX:00003a1c EBX:7df4eff4 ECX:000005b8 EDX:00000000
 ESI:00003a1a EDI:7cb3f4f0
Stack dump:
0x00414248:  00000000 c020645e 0000000e 001088e1
0x00414258:  00000003 00004000 b7ded7bf 00000000
0x00414268:  7cd921a0 00001d0e 7dd5604b 7df4eff4
0x00414278:  7cb3f4f0 000044a0 004142b0 7dd72347
0x00414288:  7c88af90 088e1000 00000001 0000000b
0x00414298:  7cd66928 00000000 7dd7231b 7df4eff4
Backtrace:

=>0 0x7dd560a1 r200FlushElts+0x61(ctx=0x7c88af90)
[/usr/local/include/drm/radeon_bo.h:153] in r200_dri.so (0x00414280)
  1 0x7dd72347 radeonAllocDmaRegion+0x37(rmesa=<register ESI not in topmost
frame>, pbo=0x7cb3f8f4, poffset=0x7cb3f8f8, bytes=<register EDI not in topmost
frame>, alignment=32)
[/home/stefan/src/mesa/src/mesa/drivers/dri/r200/radeon_dma.c:222] in
r200_dri.so (0x004142b0)
  2 0x7dd7256c rcommon_emit_vector+0x11c(ctx=0x7c88af90, aos=<register ESI not
in topmost frame>, data=, size=3, stride=24, count=1464)
[/home/stefan/src/mesa/src/mesa/drivers/dri/r200/radeon_dma.c:146] in
r200_dri.so (0x004142f0)
  3 0x7dd64923 r200EmitArrays+0x283(ctx=0x7c88af90, vimap_rev="")
[/home/stefan/src/mesa/src/mesa/drivers/dri/r200/r200_maos_arrays.c:203] in
r200_dri.so (0x00414370)
  4 0x7dd5ad2a r200_run_tcl_render+0x16a(ctx=0x7c88af90, stage=0x7caf00dc)
[/home/stefan/src/mesa/src/mesa/drivers/dri/r200/r200_tcl.c:487] in r200_dri.so
(0x004143c0)
  5 0x7de1689f _tnl_run_pipeline+0x13f(ctx=0x7c88af90)
[/home/stefan/src/mesa/src/mesa/tnl/t_pipeline.c:158] in r200_dri.so
(0x00414400)
  6 0x7dd4e6c8 r200WrapRunPipeline+0x78(ctx=<register ESI not in topmost
frame>) [/home/stefan/src/mesa/src/mesa/drivers/dri/r200/r200_state.c:2445] in
r200_dri.so (0x00414420)
  7 0x7de16d10 _tnl_draw_prims+0x330(ctx=0x7c88af90, arrays=0x414c80,
prim=0x414db8, nr_prims=1, ib=0x414d00, min_index=0, max_index=1463)
[/home/stefan/src/mesa/src/mesa/tnl/t_draw.c:355] in r200_dri.so (0x00414550)
  8 0x7dec7755 flush+0x55(copy=<register ESI not in topmost frame>)
[/home/stefan/src/mesa/src/mesa/vbo/vbo_split_copy.c:166] in r200_dri.so
(0x00414580)
  9 0x7dec7fde vbo_split_copy+0x60e(ctx=0x7c88af90, arrays=0x7cade60c,
prim=0x415118, nr_prims=1, ib=0x415108, draw=0x7de169e0, limits=0x415040)
[/home/stefan/src/mesa/src/mesa/vbo/vbo_split_copy.c:497] in r200_dri.so
(0x00414f50)
  10 0x7dec75d2 vbo_split_prims+0xc2(ctx=0x7c88af90, arrays=0x7cade60c,
prim=0x415118, nr_prims=1, ib=<register ESI not in topmost frame>, min_index=0,
max_index=<register EDI not in topmost frame>, draw=0x7de169e0,
limits=0x415040) [/home/stefan/src/mesa/src/mesa/vbo/vbo_split.c:130] in
r200_dri.so (0x00414fa0)
  11 0x7de16df6 _tnl_draw_prims+0x416(ctx=0x7c88af90, arrays=0x7cade60c,
prim=0x415118, nr_prims=1, ib=0x415108, min_index=0, max_index=4459)
[/home/stefan/src/mesa/src/mesa/tnl/t_draw.c:436] in r200_dri.so (0x004150d0)
  12 0x7de0e473 vbo_exec_DrawRangeElements+0x123(mode=4, start=0, end=4459,
count=<register EDI not in topmost frame>, type=5123, indices=)
[/home/stefan/src/mesa/src/mesa/vbo/vbo_exec_array.c:416] in r200_dri.so
(0x00415130)
  13 0x7de0e752 vbo_exec_DrawElements+0x112(mode=4, count=10860, type=5123,
indices=<register EDI not in topmost frame>)
[/home/stefan/src/mesa/src/mesa/vbo/vbo_exec_array.c:449] in r200_dri.so
(0x00415170)
  14 0x7de04a14 neutral_DrawElements+0xa4(mode=4, count=10860, type=5123,
indices=) [/home/stefan/src/mesa/src/mesa/main/vtxfmt_tmp.h:336] in r200_dri.so
(0x004151a0)
  15 0x7e8c596f drawPrimitive+0xb1f(iface=0x133938, PrimitiveType=4,
NumPrimitives=3620, StartVertexIndex=0, numberOfVertices=4460, StartIdx=0,
idxSize=2, idxData=(nil), minIndex=0)
[/home/stefan/src/wine/linux/dlls/wined3d/../../../dlls/wined3d/drawprim.c:266]
in wined3d (0x004154b0)
  16 0x7e89d550 IWineD3DDeviceImpl_DrawIndexedPrimitive+0xf0(iface=0x133938,
PrimitiveType=WINED3DPT_TRIANGLELIST, minIndex=0, NumVertices=4460,
startIndex=0, primCount=3620)
[/home/stefan/src/wine/linux/dlls/wined3d/../../../dlls/wined3d/device.c:5171]
in wined3d (0x00415520)
  17 0x7e980a36 IDirect3DDevice8Impl_DrawIndexedPrimitive+0x96(iface=<register
ESI not in topmost frame>, PrimitiveType=D3DPT_TRIANGLELIST, MinVertexIndex=0,
NumVertices=4460, startIndex=0, primCount=3620)
[/home/stefan/src/wine/linux/dlls/d3d8/../../../dlls/d3d8/device.c:1446] in
d3d8 (0x00415550)
  18 0x0101c17c in text3d (+0x1c17c) (0x00415580)
  19 0x0100c01a in text3d (+0xc01a) (0x004155e0)
  20 0x010361d8 in text3d (+0x361d8) (0x00415608)
  21 0x01037221 in text3d (+0x37221) (0x0041563c)
  22 0x0100c33b in text3d (+0xc33b) (0x0043fde0)
  23 0x0100c7b8 in text3d (+0xc7b8) (0x0043ff08)
  24 0x7b8761e7 start_process+0xc7(arg=(nil))
[/home/stefan/src/wine/linux/dlls/kernel32/../../../dlls/kernel32/process.c:904]
in kernel32 (0x0043ffe8)
  25 0xb7e97c37 wine_switch_to_stack+0x17() in libwine.so.1 (0x00000000)

0x7dd560a1 r200FlushElts+0x61 [/usr/local/include/drm/radeon_bo.h:153] in
r200_dri.so: movl     0x1c(%edx),%eax
153         return bo->bom->funcs->bo_unmap(bo);


-- 
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to