Bug 43622

Summary: [bisected ironlake] olgc api-error(negative.glTexImage1D) segfaults
Product: Mesa Reporter: fangxun <xunx.fang>
Component: Drivers/DRI/i965Assignee: Ian Romanick <idr>
Status: VERIFIED FIXED QA Contact:
Severity: major    
Priority: high CC: eric
Version: git   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 42993    

Description fangxun 2011-12-08 01:22:50 UTC
System Environment:
--------------------------
Arch:           x86_64
Platform:       piketon
Libdrm:         (master)2.4.28-4-gdd9a5b4f7fb07c78db4e7481bedca1b981030e3f
Mesa:           (master)6781fd05e9ea2ba45a615dacafca57291a220bb0
Xserver:  (master)xorg-server-1.11.99.1-56-gfb22a408c69a84f81905147de9e82cf66ffb6eb2
Xf86_video_intel: (master)2.17.0-52-g101942d41df7efaa6103e31e738775fafdb63159
Kernel_unstable:   (drm-intel-next)9a10f401a401ca69c6537641c8fc0d6b57b5aee8


Bug detailed description:
------------------------- 
Bisect shows cc6abde211fa875f90e59e3709720cfe394669069 is the first bad commit.
commit c6abde211fa875f90e59e3709720cfe394669069
Author:     Eric Anholt <eric@anholt.net>
AuthorDate: Wed Nov 23 10:01:39 2011 -0800
Commit:     Eric Anholt <eric@anholt.net>
CommitDate: Wed Nov 30 11:22:53 2011 -0800

    i965: Don't perform the precompile on fragment shaders by default.

    It is useful to have this option for shader-db, and it was also good
    at the time where we were rejecting shaders due to various internal
    limits we hadn't supported yet.  However, at this point the precompile
    step takes extra time (since not all NOS is known at link time) and
    spews misleading debug in the common case of debugging a real app.

    This is left in place for VS, where we still have a couple of codegen
    failure paths that result in link failure through precompile.  Those
    need to be fixed.

    shader-db can still get at the debug info it wants using
    "shader_precompile=true" driconf option.  Long term, we can probably
    build a good-enough app for shader-db to trigger real codegen.

(gdb) bt
#0  0x00007ffff6aca550 in extract_float_rgba (n=8190, rgba=0x253e7f0, srcFormat=<value optimized out>, srcType=5126, src=0x25567ec, swapBytes=0 '\000') at main/pack.c:2523
#1  0x00007ffff6acc430 in _mesa_unpack_color_span_ubyte (ctx=0x7ffff7fdb040, n=8190, dstFormat=6407, dest=0x24f3f40 "X\371\071\367\067", srcFormat=6407, srcType=5126,
    source=0x25567ec, srcPacking=0x7fffffffd180, transferOps=<value optimized out>) at main/pack.c:3662
#2  0x00007ffff6af61c6 in _mesa_make_temp_ubyte_image (ctx=<value optimized out>, dims=3, logicalBaseFormat=6407, textureBaseFormat=6408, srcWidth=8190, srcHeight=1,
    srcDepth=1, srcFormat=6407, srcType=5126, srcAddr=0x25267e0, srcPacking=0x7fffffffd180) at main/texstore.c:609
#3  0x00007ffff6af8a3e in _mesa_texstore_argb8888 (ctx=0x7ffff7fdb040, dims=3, baseInternalFormat=<value optimized out>, dstFormat=MESA_FORMAT_XRGB8888, dstXoffset=0,
    dstYoffset=<value optimized out>, dstZoffset=0, dstRowStride=32768, dstSlices=0x24f2a70, srcWidth=8190, srcHeight=1, srcDepth=1, srcFormat=6407, srcType=5126,
    srcAddr=0x25267e0, srcPacking=0x7fffffffd180) at main/texstore.c:1541
#4  0x00007ffff6af2dbc in _mesa_store_teximage3d (ctx=0x7ffff7fdb040, target=<value optimized out>, level=<value optimized out>, internalFormat=<value optimized out>,
    width=8190, height=1, depth=1, border=0, format=6407, type=5126, pixels=0x25267e0, packing=0x7fffffffd180, texObj=0x2266a90, texImage=0x2481110) at main/texstore.c:4787
#5  0x00007ffff6a0a547 in intelTexImage (ctx=0x7ffff7fdb040, dims=<value optimized out>, target=3552, level=0, internalFormat=6407, width=8190, height=1, depth=1, format=6407,
    type=5126, pixels=0x25267e0, unpack=0x7fffffffd180, texObj=0x2266a90, texImage=0x2481110, imageSize=0) at intel_tex_image.c:225
#6  0x00007ffff6a0ab6d in intelTexImage1D (ctx=<value optimized out>, target=<value optimized out>, level=<value optimized out>, internalFormat=<value optimized out>,
    width=<value optimized out>, border=<value optimized out>, format=6407, type=5126, pixels=0x25267e0, unpack=0x7fffffffd180, texObj=0x2266a90, texImage=0x2481110)
    at intel_tex_image.c:275
#7  0x00007ffff6aec4b9 in teximage (ctx=0x7ffffffed8a0, dims=1, target=3552, level=0, internalFormat=6407, width=8190, height=1, depth=1, border=0, format=6407, type=5126,
    pixels=0x25267e0) at main/teximage.c:2482
#8  0x00007ffff6aecbf7 in _mesa_TexImage1D (target=<value optimized out>, level=<value optimized out>, internalFormat=<value optimized out>, width=<value optimized out>,
    border=<value optimized out>, format=<value optimized out>, type=5126, pixels=0x25267e0) at main/teximage.c:2530
#9  0x000000000099e24c in conform::ApiError::Test_NegativeglTexImage1D() ()
#10 0x0000000000988efe in conform::ApiError::RunSubcase(conform::ApiError::SubcaseInfo const*) ()
#11 0x0000000000989046 in ApiErrorTestExec(testParameters*) ()
#12 0x0000000001069c09 in callFunctionHandleExceptionsInner(long (*)(testParameters*), testParameters*, char*) ()
#13 0x0000000001069d3f in callFunctionHandleExceptions(long (*)(testParameters*), testParameters*) ()
#14 0x0000000001068871 in DriverExec(long (*)(testParameters*), testParameters*) ()
#15 0x000000000104e667 in Driver(std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<driverRec*, std::allocator<driverRec*> > const&, std::vector<boost::shared_ptr<PrePostTestAction>, std::allocator<boost::shared_ptr<PrePostTestAction> > > const&, std::vector<boost::shared_ptr<PrePostTestcaseAction>, std::allocator<boost::shared_ptr<PrePostTestcaseAction> > > const&) ()
#16 0x000000000104ea18 in (anonymous namespace)::MyMessagePump::idle() ()
#17 0x000000000101e520 in MessagePump::process_messages() ()
#18 0x000000000104f53c in ExecutionManager::execute_schedules() ()
#19 0x0000000000fd9c10 in tkShellExecute(std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) ()
#20 0x0000000000fe250b in main ()

Reproduce steps:
----------------
1. start X
2. ./oglconform -z -s -suite all -v 2 -D 128 -test api-error negative.glTexImage1D
Comment 1 fangxun 2012-01-06 01:06:31 UTC
Fixed by following commit:

commit 5c818c6277247468ccf69abda00f5bc220b59644
Author: Brian Paul 
Date: Sat Dec 24 08:54:27 2011 -0700

mesa: consolidate texstore functions

The code for storing 1D, 2D and 3D tex images (whole or sub-images) was
all pretty similar. This consolidates those six paths.

v2: rework switch statement to catch unexpected targets

Reviewed-by: José Fonseca
Comment 2 fangxun 2012-01-06 01:07:55 UTC
Verified with mesa master commit cb96b06130c7728fe5838845325571ed18f6e983.

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.