Bug 67587 - floating point exception with softpipe
Summary: floating point exception with softpipe
Status: RESOLVED DUPLICATE of bug 66806
Alias: None
Product: Mesa
Classification: Unclassified
Component: Mesa core (show other bugs)
Version: git
Hardware: x86-64 (AMD64) OpenBSD
: medium normal
Assignee: mesa-dev
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-31 15:16 UTC by Jonathan Gray
Modified: 2013-08-01 04:35 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
apitrace from flightgear (1.46 MB, text/plain)
2013-07-31 15:16 UTC, Jonathan Gray
Details

Description Jonathan Gray 2013-07-31 15:16:49 UTC
Created attachment 83376 [details]
apitrace from flightgear

With the 9.2 branch softpipe seems to cause a floating point exception with
flightgear.  1e003b44e83dde3912ec48eb3df0e25802b5101e as mentioned in
bug #66806 does not seem to fix this.

apitrace: warning: caught signal 8
55: error: caught an unhandled exception
apitrace: info: taking default action for signal 8

#0  0x0000033b25ce54a5 in float_to_ubyte (f=0.25) at u_math.h:553
#1  0x0000033b25d1e112 in util_format_b8g8r8x8_unorm_pack_rgba_float (
    dst_row=0x33b24315900 "", dst_stride=256, src_row=0x33b25851400, 
    src_stride=1024, width=64, height=64) at util/u_format_table.c:325
#2  0x0000033b25c8081c in util_format_write_4f (
    format=PIPE_FORMAT_B8G8R8X8_UNORM, src=0x33b2584b000, src_stride=1024, 
    dst=0x33b24314000, dst_stride=256, x=0, y=0, w=64, h=64)
    at util/u_format.c:251
#3  0x0000033b25ca927d in pipe_put_tile_rgba_format (pt=0x33b1cdfc280, 
    dst=0x33b268da000, x=0, y=0, w=64, h=64, 
    format=PIPE_FORMAT_B8G8R8X8_UNORM, p=0x33b2584b000) at util/u_tile.c:518
#4  0x0000033b25d49829 in sp_flush_tile (tc=0x33b21737000, pos=0)
    at sp_tile_cache.c:398
#5  0x0000033b25d498d1 in sp_flush_tile_cache (tc=0x33b21737000)
    at sp_tile_cache.c:430
#6  0x0000033b25d3b686 in softpipe_set_framebuffer_state (pipe=0x33b2426d000, 
    fb=0x7f7ffffe5ca0) at sp_state_surface.c:62
#7  0x0000033b25bfb774 in cso_set_framebuffer (ctx=0x33b2881a150, 
    fb=0x7f7ffffe5ca0) at cso_cache/cso_context.c:632
#8  0x0000033b25c9d6a1 in util_gen_mipmap (ctx=0x33b1bce9400, 
    psv=0x33b25848b00, face=0, baseLevel=0, lastLevel=9, filter=1)
    at util/u_gen_mipmap.c:1640
#9  0x0000033b25b0b256 in st_render_mipmap (st=0x33b21315060, target=3553, 
    stObj=0x33b1cf3c800, baseLevel=0, lastLevel=9)
    at ../../src/mesa/state_tracker/st_gen_mipmap.c:96
#10 0x0000033b25b0b6ee in st_generate_mipmap (ctx=0x33b1a6b2000, target=3553, 
    texObj=0x33b1cf3c800) at ../../src/mesa/state_tracker/st_gen_mipmap.c:201
#11 0x0000033b25a6a5a2 in check_gen_mipmap (ctx=0x33b1a6b2000, target=3553, 
    texObj=0x33b1cf3c800, level=0) at ../../src/mesa/main/teximage.c:2807
#12 0x0000033b25a6a46b in teximage (ctx=0x33b1a6b2000, compressed=0 '\0', 
    dims=2, target=3553, level=0, internalFormat=6407, width=512, height=512, 
    depth=1, border=0, format=6407, type=5121, imageSize=0, 
    pixels=0x33b25784000) at ../../src/mesa/main/teximage.c:3161
#13 0x0000033b25a6a734 in _mesa_TexImage2D (target=3553, level=0, 
    internalFormat=6407, width=512, height=512, border=0, format=6407, 
    type=5121, pixels=0x33b25784000) at ../../src/mesa/main/teximage.c:3195
#14 0x0000033b24626349 in glTexImage2D (target=3553, level=0, 
    internalformat=6407, width=512, height=512, border=0, format=6407, 
    type=5121, pixels=0x33b25784000) at glapi_mapi_tmp.h:2683
#15 0x0000033919503eca in _ZL20retrace_glTexImage2DRN5trace4CallE ()
   from /usr/local/bin/glretrace
#16 0x0000033919431965 in retrace::Retracer::retrace ()
   from /usr/local/bin/glretrace
#17 0x000003391942dec0 in _ZN7retraceL11retraceCallEPN5trace4CallE ()
   from /usr/local/bin/glretrace
#18 0x000003391942e6eb in retrace::RelayRace::run ()

0x0000033b25ce548c <float_to_ubyte+50>: movss  0xfffffffffffffff0(%rbp),%xmm1
0x0000033b25ce5491 <float_to_ubyte+55>: movss  3274279(%rip),%xmm0        # 0x33b26004ac0 <util_format_linear_to_srgb_8unorm_table+9696>
0x0000033b25ce5499 <float_to_ubyte+63>: mulss  %xmm0,%xmm1
0x0000033b25ce549d <float_to_ubyte+67>: movss  3274271(%rip),%xmm0        # 0x33b26004ac4 <util_format_linear_to_srgb_8unorm_table+9700>
0x0000033b25ce54a5 <float_to_ubyte+75>: addss  %xmm1,%xmm0
0x0000033b25ce54a9 <float_to_ubyte+79>: movss  %xmm0,0xfffffffffffffff0(%rbp)
0x0000033b25ce54ae <float_to_ubyte+84>: mov    0xfffffffffffffff0(%rbp),%eax
0x0000033b25ce54b1 <float_to_ubyte+87>: movzbl %al,%eax

rax            0x3e800000       1048576000
rbx            0x40     64
rcx            0x400    1024
rdx            0x33b243159f8    3552545167864
rsi            0x100    256
rdi            0x33b24314000    3552545161216
rbp            0x7f7ffffe59a0   0x7f7ffffe59a0
rsp            0x7f7ffffe59a0   0x7f7ffffe59a0
r8             0x40     64
r9             0x40     64
r10            0x33b24314000    3552545161216
r11            0x33b25d1e0b7    3552572465335
r12            0x40     64
r13            0x200    512
r14            0x200    512
r15            0x1907   6407
rip            0x33b25ce54a5    0x33b25ce54a5 <float_to_ubyte+75>
eflags         0x10293  66195
cs             0x2b     43
ss             0x23     35
ds             0x23     35
es             0x23     35
fs             0x23     35
gs             0x23     35
st0            0        (raw 0x00000000000000000000)
st1            0        (raw 0x00000000000000000000)
st2            0        (raw 0x00000000000000000000)
st3            0        (raw 0x00000000000000000000)
st4            0        (raw 0x00000000000000000000)
st5            0        (raw 0x00000000000000000000)
st6            0        (raw 0x00000000000000000000)
st7            510      (raw 0x4007ff00000000000000)
fctrl          0x37f    895
fstat          0x20     32
ftag           0xffff   65535
fiseg          0x0      0
fioff          0x0      0
foseg          0x0      0
fooff          0x0      0
fop            0x0      0
xmm0           {f = {0x8000, 0x0, 0x0, 0x0}}    {f = {32768, 0, 0, 0}}
xmm1           {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0.249023438, 0, 0, 0}}
xmm2           {f = {0x1, 0x0, 0x0, 0x0}}       {f = {1, 0, 0, 0}}
xmm3           {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0.5, 0, 0, 0}}
xmm4           {f = {0x1, 0x0, 0x0, 0x0}}       {f = {1, 0, 0, 0}}
xmm5           {f = {0x1, 0x0, 0x0, 0x0}}       {f = {1, 0, 0, 0}}
xmm6           {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0.5, 0, 0, 0}}
xmm7           {f = {0x1, 0x0, 0x0, 0x0}}       {f = {1, 0, 0, 0}}
xmm8           {f = {0x0, 0x1, 0x0, 0x0}}       {f = {2.05686675e+26, 
    1.99932396, 0, 0}}
xmm9           {f = {0x0, 0x1, 0x0, 0x0}}       {f = {0, 1.875, 0, 0}}
xmm10          {f = {0x0, 0x1, 0x0, 0x0}}       {f = {0, 1.875, 0, 0}}
xmm11          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm12          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm13          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm14          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm15          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
mxcsr          0x0      0

A similiar problem seems to exist with r600 when disabling gallivm:

apitrace: warning: caught signal 8
29857: error: caught an unhandled exception
apitrace: info: taking default action for signal 8

#0  0x00000c304a5d5b2f in _mesa_Bitmap (width=8, height=15, xorig=-1, yorig=3, 
    xmove=8, ymove=0, bitmap=0xc30418fd5b0 "")
    at ../../src/mesa/main/drawpix.c:326
#1  0x00000c3050805a35 in glBitmap (width=8, height=15, xorig=-1, yorig=3, 
    xmove=8, ymove=0, bitmap=0xc30418fd5b0 "") at glapi_mapi_tmp.h:1458
#2  0x00000c2e41500b8f in _ZL16retrace_glBitmapRN5trace4CallE ()
   from /usr/local/bin/glretrace
#3  0x00000c2e41431965 in retrace::Retracer::retrace ()
   from /usr/local/bin/glretrace
#4  0x00000c2e4142dec0 in _ZN7retraceL11retraceCallEPN5trace4CallE ()
   from /usr/local/bin/glretrace
#5  0x00000c2e4142e6eb in retrace::RelayRace::run ()
   from /usr/local/bin/glretrace

the line in question is:

GLint x = IFLOOR(ctx->Current.RasterPos[0] + epsilon - xorig)

(gdb) p ctx->Current.RasterPos[0]
$1 = 5
(gdb) p /f epsilon 
$2 = 9.99999975e-05
(gdb) p xorig
$3 = -1

0x00000c304a5d5b1b <_mesa_Bitmap+345>:  mov    $0x38d1b717,%eax
0x00000c304a5d5b20 <_mesa_Bitmap+350>:  mov    %eax,0xfffffffffffffff4(%rbp)
0x00000c304a5d5b23 <_mesa_Bitmap+353>:  mov    0xffffffffffffffe0(%rbp),%rax
0x00000c304a5d5b27 <_mesa_Bitmap+357>:  movss  0x17a0(%rax),%xmm0
0x00000c304a5d5b2f <_mesa_Bitmap+365>:  addss  0xfffffffffffffff4(%rbp),%xmm0
0x00000c304a5d5b34 <_mesa_Bitmap+370>:  subss  0xffffffffffffffcc(%rbp),%xmm0
0x00000c304a5d5b39 <_mesa_Bitmap+375>:  callq  0xc304a5d5d97 <IFLOOR>

rax            0xc304f1b0000    13401625133056
rbx            0xc3042e30940    13401420138816
rcx            0x1      1
rdx            0x0      0
rsi            0xc304ab1d44f    13401551131727
rdi            0xc304f1b0000    13401625133056
rbp            0x7f7ffffe7180   0x7f7ffffe7180
rsp            0x7f7ffffe7110   0x7f7ffffe7110
r8             0x1      1
r9             0x0      0
r10            0x1      1
r11            0x206    518
r12            0xc2e418651d2    13392807350738
r13            0xc30418fd5b0    13401397908912
r14            0xf      15
r15            0x8      8
rip            0xc304a5d5b2f    0xc304a5d5b2f <_mesa_Bitmap+365>
eflags         0x10206  66054
cs             0x2b     43
ss             0x23     35
ds             0x23     35
es             0x23     35
fs             0x23     35
gs             0x23     35
st0            0        (raw 0x00000000000000000000)
st1            0        (raw 0x00000000000000000000)
st2            0        (raw 0x00000000000000000000)
st3            0        (raw 0x00000000000000000000)
st4            0        (raw 0x00000000000000000000)
st5            0        (raw 0x00000000000000000000)
st6            0        (raw 0x00000000000000000000)
st7            1        (raw 0x3fff8000000000000000)
fctrl          0x37f    895
fstat          0x0      0
ftag           0xffff   65535
fiseg          0x0      0
fioff          0x0      0
foseg          0x0      0
fooff          0x0      0
fop            0x0      0
xmm0           {f = {0x5, 0x0, 0x0, 0x0}}       {f = {5, 0, 0, 0}}
xmm1           {f = {0x3, 0x0, 0x0, 0x0}}       {f = {3, 0, 0, 0}}
xmm2           {f = {0x8, 0x0, 0x0, 0x0}}       {f = {8, 0, 0, 0}}
xmm3           {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm4           {f = {0x3, 0x0, 0x0, 0x0}}       {f = {3, 0, 0, 0}}
xmm5           {f = {0xffffffff, 0x0, 0x0, 0x0}}        {f = {-1, 0, 0, 0}}
xmm6           {f = {0x0, 0x1, 0x0, 0x0}}       {f = {0, 1.875, 0, 0}}
xmm7           {f = {0x0, 0x0, 0x0, 0x0}}       {f = {-7.94852232e+34, 
    -0.899182439, 0, 0}}
xmm8           {f = {0x0, 0x1, 0x0, 0x0}}       {f = {2.05686675e+26, 
    1.99932396, 0, 0}}
xmm9           {f = {0x0, 0x1, 0x0, 0x0}}       {f = {0, 1.875, 0, 0}}
xmm10          {f = {0x0, 0x1, 0x0, 0x0}}       {f = {0, 1.875, 0, 0}}
xmm11          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm12          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm13          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm14          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
xmm15          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}
mxcsr          0x0      0

With OpenBSD/amd64 5.4 with gcc 4.2.1

The problem does not seem to trigger with llvmpipe, r600 with gallivm or i965.

attached apitrace file can be used to trigger the problem.
Comment 1 Roland Scheidegger 2013-07-31 16:40:08 UTC
I don't know why 1e003b44e83dde3912ec48eb3df0e25802b5101e wouldn't fix this but since 63386b2f66a6d450889cd5368bc599beb7f1efbf which caused this is in 9.2 branch (I missed this before otherwise I've annotated the patch with candidate for stable branch) it definitely needs to be in 9.2 branch too and I've just done that.
Comment 2 Jonathan Gray 2013-08-01 04:35:31 UTC
It seems I was mistaken.  I rebuilt the xserver and the rest of the xorg code instead of only mesa and I can no longer reproduce this with 1e003b44e83dde3912ec48eb3df0e25802b5101e applied, closing.

*** This bug has been marked as a duplicate of bug 66806 ***


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.