Bug 73781 - [r600g] SIGFPE at ../../../../../src/gallium/drivers/r600/r600_state.c:3109
Summary: [r600g] SIGFPE at ../../../../../src/gallium/drivers/r600/r600_state.c:3109
Status: RESOLVED MOVED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Gallium/r600 (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: medium normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-01-19 02:07 UTC by ahmabdabd
Modified: 2019-09-18 19:13 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments
Proposed solution patch (736 bytes, text/plain)
2014-01-19 02:07 UTC, ahmabdabd
Details
Patch against git commit 6ec210989fa10847091f06fcfcab77dd07618dff (736 bytes, patch)
2014-01-23 06:25 UTC, ahmabdabd
Details | Splinter Review
Patch against git d8c7740ddabeb456243e40dc3cf0e86c7fca09d0 (736 bytes, patch)
2014-01-23 08:23 UTC, ahmabdabd
Details | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description ahmabdabd 2014-01-19 02:07:38 UTC
Created attachment 92368 [details]
Proposed solution patch

chipset: RV740
system architecture: x86_64
libdrm-dev: libdrm (2.4.50-1) unstable 
kernel version: 3.12-1-amd64
Linux distribution: Debian Sid x86_46

Description
The driver crashes when running the new instancing sample from the sample browser of Ogre3D (latest stable v1.9)

Steps to reproduce:
1) Run the Ogre3D sample browser.
2) Load the "New instancing" Sample.
3) Change the Technique to "Hardware instancing+VTF"
4) The application crashes with "Program received signal SIGFPE, Arithmetic exception."

Attached a full backtrace and the output of glxinfo.

Suggested Cause:

This problem occurs when large vertex textures whose width (pitch) is greater than 4095 pixels and pixel format R32G32B32A32 causing the texture width to be greater than 65536 which causes division by zero in line 3109
     cheight = ((0x0000ffff << 2) / pitch) & 0xfffffff8;
     ncopy = (copy_height / cheight) + !!(copy_height % cheight);
in
src/gallium/drivers/r600/r600_state.c

Suggested Solution:
Attached is a diff of a suggested solution to consider textures whose width is greater than 4095 pixels and avoid the crash. (Note the diff is against the 10.0 branch but it should work with 9.2 as well)

Full backtrace:
Program received signal SIGFPE, Arithmetic exception.
0x00007f131462dcb6 in r600_dma_copy_tile (rctx=0x1bdf250, dst=0x25958b0, dst_level=0, dst_x=0, dst_y=0, dst_z=0, src=0x3832590, src_level=0, src_x=0, src_y=0, src_z=0, copy_height=33, pitch=65536, bpp=16)
    at ../../../../../src/gallium/drivers/r600/r600_state.c:3109
3109		ncopy = (copy_height / cheight) + !!(copy_height % cheight);
#0  0x00007f131462dcb6 in r600_dma_copy_tile (rctx=0x1bdf250, dst=0x25958b0, dst_level=0, dst_x=0, dst_y=0, dst_z=0, src=0x3832590, src_level=0, src_x=0, src_y=0, src_z=0, copy_height=33, pitch=65536, bpp=16)
    at ../../../../../src/gallium/drivers/r600/r600_state.c:3109
#1  0x00007f131462e31e in r600_dma_blit (ctx=0x1bdf250, dst=0x25958b0, dst_level=0, dst_x=0, dst_y=0, dst_z=0, src=0x3832590, src_level=0, src_box=0x7fff5b8805e0) at ../../../../../src/gallium/drivers/r600/r600_state.c:3204
#2  0x00007f13146b0431 in r600_copy_from_staging_texture (ctx=0x1bdf250, rtransfer=0x3832540) at ../../../../../src/gallium/drivers/radeon/r600_texture.c:107
#3  0x00007f13146b2b93 in r600_texture_transfer_unmap (ctx=0x1bdf250, transfer=0x3832540) at ../../../../../src/gallium/drivers/radeon/r600_texture.c:1003
#4  0x00007f1314543acb in u_transfer_unmap_vtbl (pipe=0x1bdf250, transfer=0x3832540) at ../../../../src/gallium/auxiliary/util/u_transfer.c:138
#5  0x00007f1314397a4a in pipe_transfer_unmap (context=0x1bdf250, transfer=0x3832540) at ../../../src/gallium/auxiliary/util/u_inlines.h:481
#6  0x00007f1314398176 in st_texture_image_unmap (st=0x1ce5810, stImage=0x1db42d0) at ../../../src/mesa/state_tracker/st_texture.c:273
#7  0x00007f131436c7ca in st_UnmapTextureImage (ctx=0x7f130ee73010, texImage=0x1db42d0, slice=0) at ../../../src/mesa/state_tracker/st_cb_texture.c:226
#8  0x00007f13142e9766 in store_texsubimage (ctx=0x7f130ee73010, texImage=0x1db42d0, xoffset=0, yoffset=0, zoffset=0, width=4095, height=33, depth=1, format=6408, type=5126, pixels=0x3833a50, packing=0x7f130ee821f0, 
    caller=0x7f1314709d85 "glTexSubImage") at ../../../src/mesa/main/texstore.c:4030
#9  0x00007f13142e9965 in _mesa_store_texsubimage (ctx=0x7f130ee73010, dims=2, texImage=0x1db42d0, xoffset=0, yoffset=0, zoffset=0, width=4095, height=33, depth=1, format=6408, type=5126, pixels=0x3833a50, packing=0x7f130ee821f0)
    at ../../../src/mesa/main/texstore.c:4087
#10 0x00007f131436d926 in st_TexSubImage (ctx=0x7f130ee73010, dims=2, texImage=0x1db42d0, xoffset=0, yoffset=0, zoffset=0, width=4095, height=33, depth=1, format=6408, type=5126, pixels=0x3833a50, unpack=0x7f130ee821f0)
    at ../../../src/mesa/state_tracker/st_cb_texture.c:789
#11 0x00007f13142d15a1 in texsubimage (ctx=0x7f130ee73010, dims=2, target=3553, level=0, xoffset=0, yoffset=0, zoffset=0, width=4095, height=33, depth=1, format=6408, type=5126, pixels=0x3833a50) at ../../../src/mesa/main/teximage.c:3335
#12 0x00007f13142d16f6 in _mesa_TexSubImage2D (target=3553, level=0, xoffset=0, yoffset=0, width=4095, height=33, format=6408, type=5126, pixels=0x3833a50) at ../../../src/mesa/main/teximage.c:3371
#13 0x00007f13168255d7 in Ogre::GLTextureBuffer::upload (this=0x7f12fd0e89d0, data=..., dest=...) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/RenderSystems/GL/src/OgreGLHardwarePixelBuffer.cpp:449
#14 0x00007f131682367d in Ogre::GLHardwarePixelBuffer::unlockImpl (this=0x7f12fd0e89d0) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/RenderSystems/GL/src/OgreGLHardwarePixelBuffer.cpp:96
#15 0x00007f1316822dbd in Ogre::HardwareBuffer::unlock (this=0x7f12fd0e89d0) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/include/OgreHardwareBuffer.h:250
#16 0x00007f131e9f28fd in Ogre::InstanceBatchHW_VTF::updateVertexTexture (this=0x7f12fd0ddb90, currentCamera=0x7f12f63a07f0) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreInstanceBatchHW_VTF.cpp:502
#17 0x00007f131e9f2adf in Ogre::InstanceBatchHW_VTF::_updateRenderQueue (this=0x7f12fd0ddb90, queue=0x7f1316e02fb8) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreInstanceBatchHW_VTF.cpp:537
#18 0x00007f131ec83f4c in Ogre::RenderQueue::processVisibleObject (this=0x7f1316e02fb8, mo=0x7f12fd0ddbf0, cam=0x7f12f63a07f0, onlyShadowCasters=true, visibleBounds=0x7f1316b39ab0)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderQueue.cpp:309
#19 0x00007f130eeefd06 in Ogre::OctreeNode::_addToRenderQueue (this=0x7f12f6bb3e00, cam=0x7f12f63a07f0, queue=0x7f1316e02fb8, onlyShadowCasters=true, visibleBounds=0x7f1316b39ab0)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/PlugIns/OctreeSceneManager/src/OgreOctreeNode.cpp:182
#20 0x00007f130eef3515 in Ogre::OctreeSceneManager::walkOctree (this=0x7f12fd097600, camera=0x7f12f63a07f0, queue=0x7f1316e02fb8, octant=0x7f1316cf6b88, visibleBounds=0x7f1316b39ab0, foundvisible=false, onlyShadowCasters=true)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/PlugIns/OctreeSceneManager/src/OgreOctreeSceneManager.cpp:647
#21 0x00007f130eef3873 in Ogre::OctreeSceneManager::walkOctree (this=0x7f12fd097600, camera=0x7f12f63a07f0, queue=0x7f1316e02fb8, octant=0x7f1316cf6a78, visibleBounds=0x7f1316b39ab0, foundvisible=false, onlyShadowCasters=true)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/PlugIns/OctreeSceneManager/src/OgreOctreeSceneManager.cpp:686
#22 0x00007f130eef365f in Ogre::OctreeSceneManager::walkOctree (this=0x7f12fd097600, camera=0x7f12f63a07f0, queue=0x7f1316e02fb8, octant=0x7f1316cede38, visibleBounds=0x7f1316b39ab0, foundvisible=false, onlyShadowCasters=true)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/PlugIns/OctreeSceneManager/src/OgreOctreeSceneManager.cpp:665
#23 0x00007f130eef3274 in Ogre::OctreeSceneManager::_findVisibleObjects (this=0x7f12fd097600, cam=0x7f12f63a07f0, visibleBounds=0x7f1316b39ab0, onlyShadowCasters=true)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/PlugIns/OctreeSceneManager/src/OgreOctreeSceneManager.cpp:578
#24 0x00007f131ebcb8da in Ogre::SceneManager::_renderScene (this=0x7f12fd097600, camera=0x7f12f63a07f0, vp=0x7f1316c99048, includeOverlays=false)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreSceneManager.cpp:1518
#25 0x00007f131ed5359f in Ogre::Camera::_renderScene (this=0x7f12f63a07f0, vp=0x7f1316c99048, includeOverlays=false) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreCamera.cpp:421
#26 0x00007f131ed29879 in Ogre::Viewport::update (this=0x7f1316c99048) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreViewport.cpp:223
#27 0x00007f131ecb6d08 in Ogre::RenderTarget::_updateViewport (this=0x7f12f63a05e0, viewport=0x7f1316c99048, updateStatistics=true) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderTarget.cpp:200
#28 0x00007f131ecb6c1a in Ogre::RenderTarget::_updateAutoUpdatedViewports (this=0x7f12f63a05e0, updateStatistics=true) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderTarget.cpp:178
#29 0x00007f131ecb6b51 in Ogre::RenderTarget::updateImpl (this=0x7f12f63a05e0) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderTarget.cpp:155
#30 0x00007f131ecb88f2 in Ogre::RenderTarget::update (this=0x7f12f63a05e0, swap=true) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderTarget.cpp:613
#31 0x00007f131ebe0bf9 in Ogre::SceneManager::prepareShadowTextures (this=0x7f12fd097600, cam=0x7f12fd093e30, vp=0x7f1316bed8e8, lightList=0x7f12fd09b978)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreSceneManager.cpp:6366
#32 0x00007f131ebcb468 in Ogre::SceneManager::_renderScene (this=0x7f12fd097600, camera=0x7f12fd093e30, vp=0x7f1316bed8e8, includeOverlays=true)
    at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreSceneManager.cpp:1447
#33 0x00007f131ed5359f in Ogre::Camera::_renderScene (this=0x7f12fd093e30, vp=0x7f1316bed8e8, includeOverlays=true) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreCamera.cpp:421
#34 0x00007f131ed29879 in Ogre::Viewport::update (this=0x7f1316bed8e8) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreViewport.cpp:223
#35 0x00007f131ecb6d08 in Ogre::RenderTarget::_updateViewport (this=0x7f1317e38c98, viewport=0x7f1316bed8e8, updateStatistics=true) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderTarget.cpp:200
#36 0x00007f131ecb6c1a in Ogre::RenderTarget::_updateAutoUpdatedViewports (this=0x7f1317e38c98, updateStatistics=true) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderTarget.cpp:178
#37 0x00007f131ecb6b51 in Ogre::RenderTarget::updateImpl (this=0x7f1317e38c98) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderTarget.cpp:155
#38 0x00007f131ecb88f2 in Ogre::RenderTarget::update (this=0x7f1317e38c98, swap=false) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderTarget.cpp:613
#39 0x00007f131ec94367 in Ogre::RenderSystem::_updateAllRenderTargets (this=0x7f1317e35008, swapBuffers=false) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRenderSystem.cpp:126
#40 0x00007f131ebb5842 in Ogre::Root::_updateAllRenderTargets (this=0x7f1317e295f8) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRoot.cpp:1411
#41 0x00007f131ebb3244 in Ogre::Root::renderOneFrame (this=0x7f1317e295f8) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRoot.cpp:972
#42 0x00007f131ebb31f8 in Ogre::Root::startRendering (this=0x7f1317e295f8) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/OgreMain/src/OgreRoot.cpp:962
#43 0x0000000000416994 in OgreBites::SampleContext::go (this=0x7fff5b881860, initialSample=0x0) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/Samples/Common/include/SampleContext.h:328
#44 0x0000000000413f76 in main (argc=1, argv=0x7fff5b881b98) at /home/mega/elbatriq-linux/Ogre3D-sources/Ogre3D-source/Samples/Browser/src/SampleBrowser.cpp:116

Ouput of glxinfo:
name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_multisample, GLX_EXT_create_context_es2_profile, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, 
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_fbconfig_packed_float, 
    GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, 
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
    GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_import_context, 
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control, 
    GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGIS_multisample, 
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, 
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD RV740
OpenGL core profile version string: 3.1 (Core Profile) Mesa 10.0.2
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)
OpenGL core profile extensions:
    GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, 
    GL_AMD_shader_stencil_export, GL_ANGLE_texture_compression_dxt3, 
    GL_ANGLE_texture_compression_dxt5, GL_ARB_ES2_compatibility, 
    GL_ARB_base_instance, GL_ARB_blend_func_extended, 
    GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_debug_output, 
    GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_draw_buffers, 
    GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, 
    GL_ARB_draw_instanced, GL_ARB_explicit_attrib_location, 
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_shader, 
    GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, 
    GL_ARB_get_program_binary, GL_ARB_half_float_pixel, 
    GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, 
    GL_ARB_internalformat_query, GL_ARB_invalidate_subdata, 
    GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, 
    GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object, GL_ARB_point_sprite, 
    GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_shader_bit_encoding, 
    GL_ARB_shader_objects, GL_ARB_shader_stencil_export, 
    GL_ARB_shader_texture_lod, GL_ARB_shading_language_420pack, 
    GL_ARB_shading_language_packing, GL_ARB_sync, 
    GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_range, 
    GL_ARB_texture_compression_rgtc, GL_ARB_texture_float, 
    GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_multisample, 
    GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle, 
    GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_storage, 
    GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, 
    GL_ARB_timer_query, GL_ARB_transform_feedback2, 
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
    GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, 
    GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding, 
    GL_ARB_vertex_shader, GL_ARB_vertex_type_10f_11f_11f_rev, 
    GL_ARB_vertex_type_2_10_10_10_rev, GL_ATI_blend_equation_separate, 
    GL_ATI_texture_compression_3dc, GL_ATI_texture_float, 
    GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_blend_equation_separate, 
    GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_framebuffer_blit, 
    GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled, 
    GL_EXT_framebuffer_sRGB, GL_EXT_packed_depth_stencil, GL_EXT_packed_float, 
    GL_EXT_pixel_buffer_object, GL_EXT_provoking_vertex, GL_EXT_texture_array, 
    GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc, 
    GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer, 
    GL_EXT_texture_mirror_clamp, GL_EXT_texture_sRGB, 
    GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent, 
    GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query, 
    GL_EXT_transform_feedback, GL_EXT_vertex_array_bgra, 
    GL_IBM_multimode_draw_arrays, GL_KHR_debug, GL_MESA_pack_invert, 
    GL_MESA_texture_signed_rgba, GL_NV_conditional_render, GL_NV_depth_clamp, 
    GL_NV_packed_depth_stencil, GL_NV_texture_barrier, GL_NV_vdpau_interop, 
    GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc

OpenGL version string: 3.0 Mesa 10.0.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
    GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, 
    GL_AMD_shader_stencil_export, GL_ANGLE_texture_compression_dxt3, 
    GL_ANGLE_texture_compression_dxt5, GL_APPLE_packed_pixels, 
    GL_APPLE_vertex_array_object, GL_ARB_ES2_compatibility, 
    GL_ARB_base_instance, GL_ARB_blend_func_extended, 
    GL_ARB_color_buffer_float, GL_ARB_conservative_depth, GL_ARB_copy_buffer, 
    GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, 
    GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend, 
    GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced, 
    GL_ARB_explicit_attrib_location, GL_ARB_fragment_coord_conventions, 
    GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, 
    GL_ARB_fragment_shader, GL_ARB_framebuffer_object, 
    GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary, 
    GL_ARB_half_float_pixel, GL_ARB_half_float_vertex, 
    GL_ARB_instanced_arrays, GL_ARB_internalformat_query, 
    GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment, 
    GL_ARB_map_buffer_range, GL_ARB_multisample, GL_ARB_multitexture, 
    GL_ARB_occlusion_query, GL_ARB_occlusion_query2, 
    GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, 
    GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_shader_bit_encoding, 
    GL_ARB_shader_objects, GL_ARB_shader_stencil_export, 
    GL_ARB_shader_texture_lod, GL_ARB_shading_language_100, 
    GL_ARB_shading_language_420pack, GL_ARB_shading_language_packing, 
    GL_ARB_shadow, GL_ARB_sync, GL_ARB_texture_border_clamp, 
    GL_ARB_texture_compression, GL_ARB_texture_compression_rgtc, 
    GL_ARB_texture_cube_map, GL_ARB_texture_env_add, 
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, 
    GL_ARB_texture_env_dot3, GL_ARB_texture_float, 
    GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat, 
    GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, 
    GL_ARB_texture_storage, GL_ARB_texture_storage_multisample, 
    GL_ARB_texture_swizzle, GL_ARB_timer_query, GL_ARB_transform_feedback2, 
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
    GL_ARB_transpose_matrix, GL_ARB_uniform_buffer_object, 
    GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, 
    GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object, 
    GL_ARB_vertex_program, GL_ARB_vertex_shader, 
    GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, 
    GL_ARB_window_pos, GL_ATI_blend_equation_separate, GL_ATI_draw_buffers, 
    GL_ATI_separate_stencil, GL_ATI_texture_compression_3dc, 
    GL_ATI_texture_env_combine3, GL_ATI_texture_float, 
    GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, 
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, 
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array, 
    GL_EXT_copy_texture, GL_EXT_draw_buffers2, GL_EXT_draw_instanced, 
    GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit, 
    GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled, 
    GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB, 
    GL_EXT_gpu_program_parameters, GL_EXT_multi_draw_arrays, 
    GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels, 
    GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, 
    GL_EXT_polygon_offset, GL_EXT_provoking_vertex, GL_EXT_rescale_normal, 
    GL_EXT_secondary_color, GL_EXT_separate_specular_color, 
    GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, 
    GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D, 
    GL_EXT_texture_array, GL_EXT_texture_compression_dxt1, 
    GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map, 
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer, 
    GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp, 
    GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, 
    GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent, 
    GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query, 
    GL_EXT_transform_feedback, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, 
    GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip, 
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate, GL_KHR_debug, 
    GL_MESA_pack_invert, GL_MESA_texture_array, GL_MESA_texture_signed_rgba, 
    GL_MESA_window_pos, GL_NV_blend_square, GL_NV_conditional_render, 
    GL_NV_depth_clamp, GL_NV_fog_distance, GL_NV_light_max_exponent, 
    GL_NV_packed_depth_stencil, GL_NV_primitive_restart, 
    GL_NV_texgen_reflection, GL_NV_texture_barrier, 
    GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_NV_vdpau_interop, 
    GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc, 
    GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp, 
    GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays
Comment 1 ahmabdabd 2014-01-23 06:25:56 UTC
Created attachment 92636 [details] [review]
Patch against git commit  6ec210989fa10847091f06fcfcab77dd07618dff
Comment 2 Michel Dänzer 2014-01-23 07:50:51 UTC
(In reply to comment #0)
> Created attachment 92368 [details]

I don't see how ((0x0000ffff << 2) / pitch) can be > 0xfffffff8, so I'm afraid this isn't a proper fix but just avoids the problem by accident.

I think a proper solution would need to set cheight to 1 if (pitch > (0x0000ffff << 2)) and do several copies for each line.

BTW, in general it's better to submit patches directly to the mesa-dev mailing list than to attach them in bugzilla.
Comment 3 ahmabdabd 2014-01-23 08:22:05 UTC
Thanks for your reply.

From what I understand due to r6xx/r7xx limitation, the blit must be on 8 boundary for copy height greater than 8, this should not be true for copy heights less than 8. 
I think the fix then should be
cheight = ((0x0000ffff << 2) / pitch) > 0x00000008 ? 
		((0x0000ffff << 2) / pitch) & 0xfffffff8 : ((0x0000ffff << 2) / pitch);

I will modify the patch and reattach.
Comment 4 ahmabdabd 2014-01-23 08:23:05 UTC
Created attachment 92645 [details] [review]
Patch against git d8c7740ddabeb456243e40dc3cf0e86c7fca09d0
Comment 5 jospezial 2014-02-17 14:08:14 UTC
https://bugs.gentoo.org/show_bug.cgi?id=501286
media-libs/mesa crashes x11-drivers/xf86-video-ati[glamor] with SIGFPE with large textures (when firefox loads a specific website)

x11-libs/glamor-0.6.0
media-libs/mesa-9.2.5
x11-base/xorg-server-1.15.0
Radeon HD 4850 RV770

patch from #c4
https://bugs.freedesktop.org/attachment.cgi?id=92645
works for me

please add it to the source
Comment 6 jospezial 2014-02-17 15:28:28 UTC
I read something about this bug there:
http://lists.freedesktop.org/archives/mesa-dev/2014-February/053164.html

How is it going on?
Comment 7 Török Edwin 2014-03-01 14:03:15 UTC
This also affects FlightGear 3.0. If you set View->Rendering Options->Quality to 5 then it crashes with a SIGFPE.

I tested the patch from https://bugs.freedesktop.org/attachment.cgi?id=92645 on top of Mesa 10.1 git branch and it worked, no more SIGFPE.

Stacktrace of SIGFPE without the patch:
0x00007ffff22ddeb5 in r600_dma_copy_tile (rctx=0x12ca8f0, dst=0xc8f67f0, dst_level=0, dst_x=0, dst_y=0, dst_z=0, 
    src=0xc8f7660, src_level=0, src_x=0, src_y=0, src_z=0, copy_height=1024, pitch=32768, bpp=16) at r600_state.c:3285
3285            ncopy = (copy_height / cheight) + !!(copy_height % cheight);
(gdb) bt
#0  0x00007ffff22ddeb5 in r600_dma_copy_tile (rctx=0x12ca8f0, dst=0xc8f67f0, dst_level=0, dst_x=0, dst_y=0, dst_z=0, 
    src=0xc8f7660, src_level=0, src_x=0, src_y=0, src_z=0, copy_height=1024, pitch=32768, bpp=16) at r600_state.c:3285
#1  0x00007ffff22de573 in r600_dma_blit (ctx=0x12ca8f0, dst=0xc8f67f0, dst_level=0, dst_x=0, dst_y=0, dst_z=0, src=0xc8f7660, 
    src_level=0, src_box=0x7fffffffc630) at r600_state.c:3386
#2  0x00007ffff2363181 in r600_copy_from_staging_texture (ctx=0x12ca8f0, rtransfer=0xc5a09a0) at r600_texture.c:108
#3  0x00007ffff2365a83 in r600_texture_transfer_unmap (ctx=0x12ca8f0, transfer=0xc5a09a0) at r600_texture.c:1062
#4  0x00007ffff21f577c in u_transfer_unmap_vtbl (pipe=0x12ca8f0, transfer=0xc5a09a0) at util/u_transfer.c:138
#5  0x00007ffff2044a85 in pipe_transfer_unmap (context=0x12ca8f0, transfer=0xc5a09a0)
    at ../../src/gallium/auxiliary/util/u_inlines.h:481
#6  0x00007ffff20451b1 in st_texture_image_unmap (st=0x13515b0, stImage=0xc8f2c60) at state_tracker/st_texture.c:273
#7  0x00007ffff2019d36 in st_UnmapTextureImage (ctx=0x7ffff0e9d010, texImage=0xc8f2c60, slice=0)
    at state_tracker/st_cb_texture.c:224
#8  0x00007ffff1f94523 in store_texsubimage (ctx=0x7ffff0e9d010, texImage=0xc8f2c60, xoffset=0, yoffset=0, zoffset=0, 
    width=8192, height=4096, depth=1, format=6408, type=5121, pixels=0x7fffb2ffe010, packing=0x7ffff0eb9180, 
    caller=0x7ffff2bf12b5 "glTexSubImage") at main/texstore.c:4108
#9  0x00007ffff1f94722 in _mesa_store_texsubimage (ctx=0x7ffff0e9d010, dims=2, texImage=0xc8f2c60, xoffset=0, yoffset=0, 
    zoffset=0, width=8192, height=4096, depth=1, format=6408, type=5121, pixels=0x7fffb2ffe010, packing=0x7ffff0eb9180)
    at main/texstore.c:4165
#10 0x00007ffff201ae92 in st_TexSubImage (ctx=0x7ffff0e9d010, dims=2, texImage=0xc8f2c60, xoffset=0, yoffset=0, zoffset=0, 
    width=8192, height=4096, depth=1, format=6408, type=5121, pixels=0x7fffb2ffe010, unpack=0x7ffff0eb9180)
    at state_tracker/st_cb_texture.c:787
#11 0x00007ffff201afda in st_TexImage (ctx=0x7ffff0e9d010, dims=2, texImage=0xc8f2c60, format=6408, type=5121, 
    pixels=0x7fffb2ffe010, unpack=0x7ffff0eb9180) at state_tracker/st_cb_texture.c:811
#12 0x00007ffff1f7b271 in teximage (ctx=0x7ffff0e9d010, compressed=0 '\000', dims=2, target=3553, level=0, 
    internalFormat=34030, width=8192, height=4096, depth=1, border=0, format=6408, type=5121, imageSize=0, 
    pixels=0x7fffb2ffe010) at main/teximage.c:3243
#13 0x00007ffff1f7b407 in _mesa_TexImage2D (target=3553, level=0, internalFormat=34030, width=8192, height=4096, border=0, 
    format=6408, type=5121, pixels=0x7fffb2ffe010) at main/teximage.c:3282
#14 0x00007ffff5c74bb1 in osg::Texture::applyTexImage2D_load(osg::State&, unsigned int, osg::Image const*, int, int, int) const
    () from /usr/lib/libosg.so.99
#15 0x00007ffff5c68f22 in osg::Texture2D::apply(osg::State&) const () from /usr/lib/libosg.so.99
#16 0x00007ffff5c461f2 in osg::State::applyAttributeOnTexUnit(unsigned int, osg::StateAttribute const*, osg::State::AttributeStack&) () from /usr/lib/libosg.so.99
#17 0x00007ffff5c4945e in osg::State::applyAttributeListOnTexUnit(unsigned int, std::map<std::pair<osg::StateAttribute::Type, unsigned int>, osg::State::AttributeStack, std::less<std::pair<osg::StateAttribute::Type, unsigned int> >, std::allocator<std::pair<std::pair<osg::StateAttribute::Type, unsigned int> const, osg::State::AttributeStack> > >&, std::map<std::pair<osg::StateAttribute::Type, unsigned int>, std::pair<osg::ref_ptr<osg::StateAttribute>, unsigned int>, std::less<std::pair<osg::StateAttribute::Type, unsigned int> >, std::allocator<std::pair<std::pair<osg::StateAttribute::Type, unsigned int> const, std::pair<osg::ref_ptr<osg::StateAttribute>, unsigned int> > > > const&) () from /usr/lib/libosg.so.99
#18 0x00007ffff5c43d17 in osg::State::apply(osg::StateSet const*) () from /usr/lib/libosg.so.99
Comment 8 Florent Rougon 2014-04-28 11:49:56 UTC
Hello,

I am also experiencing this bug on Debian unstable with Linux 3.14 from Debian experimental and FlightGear 3.0.0. I'll include the corresponding backtrace at the end of this message.

'lspci -nv' returns the following concerning the graphics adapter (run on Debian wheezy, but on the same computer of course):

01:00.0 0300: 1002:9490 (prog-if 00 [VGA controller])
        Subsystem: 174b:e100
        Flags: bus master, fast devsel, latency 0, IRQ 49
        Memory at e0000000 (64-bit, prefetchable) [size=256M]
        Memory at fb9e0000 (64-bit, non-prefetchable) [size=64K]
        I/O ports at be00 [size=256]
        [virtual] Expansion ROM at fb900000 [disabled] [size=128K]
        Capabilities: [50] Power Management version 3
        Capabilities: [58] Express Legacy Endpoint, MSI 00
        Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Kernel driver in use: radeon

(without the -n option: Advanced Micro Devices [AMD] nee ATI RV730XT [Radeon HD 4670])

I tested the patch at https://bugs.freedesktop.org/attachment.cgi?id=92645 applied on top of the mesa_10.1.0-5 Debian package. It seemed to be fine with FlightGear for 2 or 3 hours, until I had a hard lockup: first, the screen went into power-saving mode as if there were no signal anymore, then it went back on, but part of the display was garbled (at the bottom IIRC) and the system appeared to be completely frozen: nothing visible when moving the mouse, impossible to switch to a virtual console. I had to do a hard reboot, after which I disabled the patch.

Here follows the backtrace obtained with FlightGear 3.0.0 on Debian unstable, using Linux 3.14 from Debian experimental, *without the aforementioned mesa patch*:

0  in r600_dma_copy_tile of ../../../../../../src/gallium/drivers/r600/r600_state.c:3285
1  in r600_dma_blit of ../../../../../../src/gallium/drivers/r600/r600_state.c:3386
2  in r600_copy_from_staging_texture of ../../../../../../src/gallium/drivers/radeon/r600_texture.c:108
3  in r600_texture_transfer_unmap of ../../../../../../src/gallium/drivers/radeon/r600_texture.c:1062
4  in pipe_transfer_unmap of ../../../../src/gallium/auxiliary/util/u_inlines.h:481
5  in st_texture_image_unmap of ../../../../src/mesa/state_tracker/st_texture.c:273
6  in store_texsubimage of ../../../../src/mesa/main/texstore.c:4108
7  in _mesa_store_texsubimage of ../../../../src/mesa/main/texstore.c:4165
8  in st_TexSubImage of ../../../../src/mesa/state_tracker/st_cb_texture.c:787
9  in st_TexImage of ../../../../src/mesa/state_tracker/st_cb_texture.c:811
10 in teximage of ../../../../src/mesa/main/teximage.c:3243
11 in _mesa_TexImage2D of ../../../../src/mesa/main/teximage.c:3282
12 in osg::Texture::applyTexImage2D_load(osg::State&, unsigned int, osg::Image const*, int, int, int) const of /usr/lib/libosg.so.99
13 in osg::Texture2D::apply(osg::State&) const of /usr/lib/libosg.so.99
14 in osg::State::applyAttributeOnTexUnit(unsigned int, osg::StateAttribute const*, osg::State::AttributeStack&) of /usr/lib/libosg.so.99
15 in osg::State::applyAttributeListOnTexUnit(unsigned int, std::map<std::pair<osg::StateAttribute::Type, unsigned int>, osg::State::AttributeStack, std::less<std::pair<osg::StateAttribute::Type, unsigned int> >, std::allocator<std::pair<std::pair<osg::StateAttribute::Type, unsigned int> const, osg::State::AttributeStack> > >&, std::map<std::pair<osg::StateAttribute::Type, unsigned int>, std::pair<osg::ref_ptr<osg::StateAttribute>, unsigned int>, std::less<std::pair<osg::StateAttribute::Type, unsigned int> >, std::allocator<std::pair<std::pair<osg::StateAttribute::Type, unsigned int> const, std::pair<osg::ref_ptr<osg::StateAttribute>, unsigned int> > > > const&) of /usr/lib/libosg.so.99
16 in osg::State::apply(osg::StateSet const*) of /usr/lib/libosg.so.99
17 in osgUtil::RenderLeaf::render(osg::RenderInfo&, osgUtil::RenderLeaf*) of /usr/lib/libosgUtil.so.99
18 in osgUtil::RenderBin::drawImplementation(osg::RenderInfo&, osgUtil::RenderLeaf*&) of /usr/lib/libosgUtil.so.99
19 in osgUtil::RenderBin::drawImplementation(osg::RenderInfo&, osgUtil::RenderLeaf*&) of /usr/lib/libosgUtil.so.99
20 in osgUtil::RenderStage::drawImplementation(osg::RenderInfo&, osgUtil::RenderLeaf*&) of /usr/lib/libosgUtil.so.99
21 in osgUtil::RenderStage::drawInner(osg::RenderInfo&, osgUtil::RenderLeaf*&, bool&) of /usr/lib/libosgUtil.so.99
22 in osgUtil::RenderStage::draw(osg::RenderInfo&, osgUtil::RenderLeaf*&) of /usr/lib/libosgUtil.so.99
23 in osgUtil::SceneView::draw() of /usr/lib/libosgUtil.so.99
24 in osgViewer::Renderer::cull_draw() of /usr/lib/libosgViewer.so.99
25 in osg::GraphicsContext::runOperations() of /usr/lib/libosg.so.99
26 in osgViewer::ViewerBase::renderingTraversals() of /usr/lib/libosgViewer.so.99
27 in fgOSMainLoop of /home/flo/flightgear-unstable/flightgear/flightgear-3.0.0/src/Viewer/fg_os_osgviewer.cxx:335
28 in fgMainInit of /home/flo/flightgear-unstable/flightgear/flightgear-3.0.0/src/Main/main.cxx:493
29 in main of /home/flo/flightgear-unstable/flightgear/flightgear-3.0.0/src/Main/bootstrap.cxx:278

Thanks in advance to anyone helping resolve this issue!
Comment 9 Michel Dänzer 2014-05-02 03:43:54 UTC
Is this still an issue with current Git master? There have been a few changes to the DMA code.
Comment 10 Florent Rougon 2014-05-05 20:44:52 UTC
(In reply to comment #9)
> Is this still an issue with current Git master? There have been a few
> changes to the DMA code.

Hello,

Many thanks for your reply. As you suggested, I've tried with Mesa from Git master, dated May 1st (10.2-branchpoint-2-g829cb04). FlightGear 3.0.0 has been running for a significant amount of time (I'd say 6 to 8 hours), with quality 5 for several hours and I haven't seen any bug from the graphic stack (well, there are weird rainbow-like textures in a few places, but I've been seeing them for several months already and haven't been able to investigate yet; it's probably unrelated to the bug being discussed here).

I'd like to say that the performance is also much better than with the graphic stack available in Debian wheezy. Yay!

Part of the actual testing in FlightGear is done by my nephews on weekends, therefore I can report with a longer testing period in 1 to 3 weeks approximately if you wish.

I have two little questions:
  - is there a performance impact if mesa has been compiled with --enable-debug?
  - when it is rebuilt, is it necessary to restart X.org in order to have everything using the new libraries (I have used the method outlined at http://pkg-xorg.alioth.debian.org/howto/build-mesa.html to test the new mesa without messing with the system installation---in short: LD_LIBRARY_PATH, LIBGL_DRIVERS_PATH and EGL_DRIVERS_PATH)?

Thank you!
Comment 11 Marek Olšák 2014-05-05 21:51:31 UTC
I disabled async DMA for R700 due to stability issues and hangs. The core problem hasn't been fixed and will show up once we enable async DMA again.

To answer your questions:
1) --enable-debug has a significant performance impact, because it disables compiler optimizations (forces -O0).
2) Yes, restarting the X server is required. The environment variables only affect the terminal where they are set, so they can be useful if you just want to test one app without affecting your system and other apps.
Comment 12 Florent Rougon 2014-05-06 14:30:37 UTC
Ah, so this explains why the driver is stable in Git master. If you need me to test one particular commit, don't hesitate to ask.

Thanks for your answers.
Comment 13 GitLab Migration User 2019-09-18 19:13:17 UTC
-- 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/488.


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.