| Summary: | [i965] crash in copy_array_to_vbo_array when running freesurfer | ||
|---|---|---|---|
| Product: | Mesa | Reporter: | Brice Goglin <brice.goglin> | 
| Component: | Drivers/DRI/i965 | Assignee: | haihao <haihao.xiang> | 
| Status: | RESOLVED WONTFIX | QA Contact: | |
| Severity: | normal | ||
| Priority: | medium | CC: | debian | 
| Version: | unspecified | ||
| Hardware: | Other | ||
| OS: | All | ||
| URL: | http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478893 | ||
| Whiteboard: | |||
| i915 platform: | i915 features: | ||
| Attachments: | split client vertex array backtraces after applying 16860: split client vertex array | ||
| If additional diagnostics is needed - don't hesitate to contact me debian AT onerussian.com Thanks in advance Created attachment 16860 [details] [review] split client vertex array The vertex buffer is too large and the memory manager fails to upload the vertex buffer. This patch tries to split the vertex buffer on 965. Hi, Halchenko Could you try this patch? Thanks. Haihao Created attachment 16873 [details]
backtraces after applying 16860: split client vertex array
patched mesa sources, installed patched packages onto my debian system, but problem persisted and it seems that arguments (from visual inspection) stay the same in a fresh backtrace... I am pretty sure that I patched mesa properly before building... could I be wrong?Seems it didn't split the vertex buffer after applying this patch. Could you try a smaller upload buffer? modify the following in the patch: brw->vb.upload.max_size = brw->intel.intelScreen->tex.size >> 4. >modify the following in the patch:
>brw->vb.upload.max_size = brw->intel.intelScreen->tex.size >> 4.
I am sorry -- I might be slow, but modify that to what? the line is already like that:
*$> grep 'vb.upload.max_size =' patch1.patch   mesa-7.0.3/src/mesa/drivers/dri/i965/brw_draw.c
patch1.patch:+   brw->vb.upload.max_size = brw->intel.intelScreen->tex.size >> 4;
mesa-7.0.3/src/mesa/drivers/dri/i965/brw_draw.c:   brw->vb.upload.max_size = brw->intel.intelScreen->tex.size >> 4;
or what it should be modified to?(In reply to comment #5) > >modify the following in the patch: > >brw->vb.upload.max_size = brw->intel.intelScreen->tex.size >> 4. > I am sorry -- I might be slow, but modify that to what? the line is already > like that: > *$> grep 'vb.upload.max_size =' patch1.patch > mesa-7.0.3/src/mesa/drivers/dri/i965/brw_draw.c > patch1.patch:+ brw->vb.upload.max_size = brw->intel.intelScreen->tex.size >> > 4; > mesa-7.0.3/src/mesa/drivers/dri/i965/brw_draw.c: brw->vb.upload.max_size = > brw->intel.intelScreen->tex.size >> 4; > > or what it should be modified to? > I mean you can replace 4 with 6 (or 7, 8 etc.) ok -- I tried it with 6 and 8: now it got a bit further: it rendered image once and then stall at the same point. traceback will follow below. But let me bring post-mortem debug analysis since it might be helpful:
(gdb) p size
$20 = 11796480
(gdb) p element_size
$21 = 12
(gdb) p map
$23 = (GLubyte *) 0x0
(gdb) print brw->vb.upload.max_size
$25 = 131072
If wonder if map=0x0 is the one to blame?
for the cause I am leaving it up to you to figure out since I have no clue in what I am doing... or should I try >> 9, >> 10, etc?
ok -- backtrace (top part)
#0  0x00002b026c489dbb in copy_array_to_vbo_array (brw=0x1f39ae0, 
    i=<value optimized out>, array=0x1f69f78, element_size=12, count=983040)
    at brw_draw_upload.c:263
        map = (GLubyte *) 0x0
        ctx = <value optimized out>
        size = 11796480
        vbo = (struct gl_buffer_object *) 0x265f470
        offset = <value optimized out>
        __PRETTY_FUNCTION__ = "copy_array_to_vbo_array"
#1  0x00002b026c48a2fa in brw_upload_vertices (brw=0x1f39ae0, min_index=0, 
    max_index=983039) at brw_draw_upload.c:478
        input = (struct brw_vertex_element *) 0x1f4e168
        tmp = 0
        vep = {header = {length = 0, opcode = 0}, ve = {{ve0 = {
        src_offset = 0, pad = 0, src_format = 0, pad0 = 0, valid = 0, 
        vertex_buffer_index = 0}, ve1 = {dst_offset = 0, pad = 0, 
        vfcomponent3 = 0, vfcomponent2 = 0, vfcomponent1 = 0, 
        vfcomponent0 = 0}} <repeats 18 times>}}
        vbp = {header = {bits = {length = 0, opcode = 0}, dword = 0}, vb = {{
      vb0 = {bits = {pitch = 0, pad = 0, access_type = 0, vb_index = 0}, 
        dword = 0}, buffer = 0x0, offset = 0, max_index = 0, 
      instance_data_step_rate = 0} <repeats 17 times>}}
        i = 2
        ptr = (const void *) 0x2b02709d7060
        interleave = 0
        enabled = {0x1f4e128, 0x1f4e168, 0x1f4e188, 0xeffff00000000, 
  0x2b026c489960, 0x7fff52b00c90, 0xdfff200000404, 0x1000e, 0x0, 
  0x2b026c493330, 0x24, 0x1f4e8ec, 0x1f4dad8, 0x8, 0x7, 0x2b026c4933f7, 0x0, 
  0x0, 0x0, 0x2b026c493330, 0x20, 0x7fff52b00b40, 0x1f4d778, 0x0, 
  0x2b026c890d40, 0x2b026c4933f7, 0x0, 0x0, 0x0, 0x12c000000000, 0x1ff0c40, 
  0x1f39ae0}
        nr_enabled = 3
        upload = {0x1f4e128, 0x1f4e168, 0x1f4e188, 0x2b026c4899cf, 0x1000d, 
  0x2b026c489960, 0x7fff52b00ab0, 0xfffffffc00000004, 0x0, 0x7fff52b00a8c, 
  0x100000001, 0x7fff52b00a20, 0x1, 0x1000e, 0xf0000, 0x7fff52b00cf0, 0xf0000, 
  0x2b026c5219e0, 0x1ff000effff, 0x1, 0xfff2, 0x2b026c521e0d, 0x4000e0012, 
  0x8382f8, 0x7fff52b00c10, 0x7fff52b00bf0, 0x7fff52b00c2c, 0x7fff52b00c28, 
  0x7fff52b00a20, 0x1000e00000001, 0x1f39ae0, 0x1f93ba8}
        nr_uploads = 3
        __PRETTY_FUNCTION__ = "brw_upload_vertices"
#2  0x00002b026c489779 in brw_try_draw_prims (ctx=0x1f39ae0, arrays=0x1f93ba8, 
    prim=0x7fff52b00cf0, nr_prims=1, ib=0x0, min_index=0, max_index=983039)
    at brw_draw.c:319
        intel = <value optimized out>
        brw = (struct brw_context *) 0x0
        retval = <value optimized out>
        i = <value optimized out>
        j = <value optimized out>
        __PRETTY_FUNCTION__ = "brw_try_draw_prims"
        __FUNCTION__ = "brw_try_draw_prims"
#3  0x00002b026c489a4e in brw_draw_prims (ctx=0x1f39ae0, arrays=0x1f93ba8, 
    prim=0x7fff52b00cf0, nr_prims=1, ib=0x0, min_index=0, max_index=983039)
    at brw_draw.c:478
        intel = <value optimized out>
        retval = <value optimized out>
#4  0x00002b026c51f9bb in vbo_exec_DrawArrays (mode=4, start=0, count=983040)
    at vbo/vbo_exec_array.c:264
        ctx = (GLcontext *) 0x0
        prim = {{mode = 4, indexed = 0, begin = 1, end = 1, weak = 0, pad = 0, 
    start = 0, count = 983040}}
#5  0x00002b025a566295 in __glXDisp_DrawArrays (
    pc=0x2b02709d7060 "@\021@a\027IBѿ\200\031\026?\222N?#*\207=>>>\021@HB\0375\032?QK?GW=>>>k\035@[zHB}L\027?3\031N?ZO=>>>@\021@a\027IBѿ5\032?QK?GW=>>>k\035@[zHB}M6\032?\231\035L?\030=>>>H+\030@\224HB^俠L\027?3\031N?"...)
    at ../../../GL/glx/render2.c:248
        datatype = 5126
        numVals = 3
        numComponents = 3
        primType = 4
        stride = 36
        i = 3
#6  0x00002b025a547da6 in DoRenderLarge (cl=0x135b620, 
    pc=0x2911160 "\212ɾ\201O:$ݾ", do_swap=0)
    at ../../../GL/glx/glxcmds.c:2055
        proc = (__GLXdispatchRenderProcPtr) 0xa0
        client = (ClientPtr) 0x1482380
        dataBytes = 3780
probably you know that already, but without DRI (option "DRI" "off") the bug is not exercised. Is there anything else I could help troubleshoot? Setting INTEL_DEBUG=buf in your environment will detail how to allocate graphics memory for all objects, Could you try with it and attach the result? ok - did export INTEL_DEBUG=buf in debian/rules. But then what to look for? 
Shouldn't it be enabled with some other debug options (e.g. DEBUG_DRI, DEBUG_TEXTURE) since judging from first look at ifdefs INTEL_DEBUG is never capable to trigger additional actions alone:
*$> grep -h -r INTEL_DEBUG * | sed -e 's/^ *//g' -e 's/ *$//g' | sort | uniq 
#define DBG(...)  do { if (INTEL_DEBUG & DEBUG_BUFMGR) _mesa_printf(__VA_ARGS__); } while(0)
#define DBG(...)  do { if (INTEL_DEBUG & FILE_DEBUG_FLAG) _mesa_printf(__VA_ARGS__); } while(0)
#define INTEL_DEBUG             0
extern int INTEL_DEBUG;
I810_DEBUG |= driParseDebugString( getenv( "INTEL_DEBUG" ),
if (intel->aub_file && (INTEL_DEBUG & DEBUG_SYNC)) {
if (INTEL_DEBUG) {
if (INTEL_DEBUG & DEBUG_BATCH)
if (INTEL_DEBUG & DEBUG_BLIT)
if (INTEL_DEBUG & DEBUG_BUFMGR)
if (INTEL_DEBUG & DEBUG_DMA)
if (INTEL_DEBUG & DEBUG_DRI)
if (INTEL_DEBUG&DEBUG_DRI)
if(INTEL_DEBUG&DEBUG_DRI)
if (INTEL_DEBUG & DEBUG_FALLBACKS)
if (INTEL_DEBUG & DEBUG_IOCTL)
if (INTEL_DEBUG & DEBUG_LOCK)
         if (INTEL_DEBUG & DEBUG_PIXEL)
if (INTEL_DEBUG & DEBUG_PIXEL)
if (INTEL_DEBUG & DEBUG_PRIMS)
if (INTEL_DEBUG & DEBUG_SINGLE_THREAD)
if (INTEL_DEBUG & DEBUG_STATE)
if (INTEL_DEBUG & DEBUG_STATS)
if (INTEL_DEBUG & DEBUG_STATS || intel->stats_wm)
if (INTEL_DEBUG & DEBUG_SYNC) {
               if (INTEL_DEBUG & DEBUG_TEXTURE)
                  if (INTEL_DEBUG & DEBUG_TEXTURE)
if (INTEL_DEBUG & DEBUG_TEXTURE)
if(INTEL_DEBUG&DEBUG_TEXTURE)
if (INTEL_DEBUG & DEBUG_URB)
         if (INTEL_DEBUG & (DEBUG_URB|DEBUG_FALLBACKS))
if (INTEL_DEBUG & DEBUG_VERTS)
if (INTEL_DEBUG & DEBUG_VS) {
if (INTEL_DEBUG & DEBUG_WM) {
#ifndef INTEL_DEBUG
INTEL_DEBUG |= driParseDebugString( getenv( "INTEL_DEBUG" ),
INTEL_DEBUG  = driParseDebugString( getenv( "INTEL_DEBUG" ),
INTEL_DEBUG = driParseDebugString(getenv("INTEL_DEBUG"), debug_control);
int INTEL_DEBUG = (0);
So, now it crashed as usual with
#0  0x00007fdde7d0ec04 in copy_array_to_vbo_array (brw=0x3179160, i=<value optimized out>, 
    array=0x31a0258, element_size=12, count=983040) at brw_draw_upload.c:263
        map = (GLubyte *) 0x0
        ctx = <value optimized out>
        size = 11796480
        vbo = (struct gl_buffer_object *) 0x3522a20
        offset = <value optimized out>
        __PRETTY_FUNCTION__ = "copy_array_to_vbo_array"
Full bt is at 
http://www.onerussian.com/Linux/bugs/xorg.crash/Xorg.INTEL_DEBUG.log
I built it with all the changes we already went through previousely but on top of debian's 7.0.3-5 release of mesa which listed following changes in the last releases (since -1)
 * Disable the i915tex driver, it doesn't build against libdrm 2.3.1.
  * Pull from mesa_7_0_branch (27425708).
mesa (7.0.3-4) unstable; urgency=low
  * Pull from mesa_7_0_branch (2ac4919d).
  * Put back our configs/ changes into the .diff.gz since choose-configs
    needs them before quilt is invoked. Put 04_cleanup-osmesa-configs.patch
    there as well for #485161.
mesa (7.0.3-3) unstable; urgency=low
  * Pull from mesa_7_0_branch (718724de).
    + Fix intel_batchbuffer_space on i965, closes: #455817.
    + Fix busy error in i915_wait_irq for real now, closes: #467319.
  * Move our configs/ changes from the .diff.gz into our quilt patches,
    with 04_cleanup-osmesa-configs.patch renamed into 04_debian-configs.patch,
    closes: #485161.
mesa (7.0.3-2) unstable; urgency=low
  * Pull from mesa_7_0_branch (03447de3).
  * Set right cliprects for the current draw region on Intel, closes: #467319.
  * Use BRW_TEXCOORDMODE_CLAMP instead of BRW_TEXCOORDMODE_CLAMP_BORDER
    to implement GL_CLAMP on i965, closes: #478880.
  * Fix segment fault with BASE_LEVEL set to 5 for MipMap on i915,
    closes: #451339.
  * Disable low impact fallback on r300 by default, closes: #440868.
Full diff (from release 7.0.3) for my build is available from
http://www.onerussian.com/Linux/bugs/xorg.crash/mesa_7.0.3-6~1.diff.gzactually I missed the single point where DEBUG_INTEL is used alone in mesa/drivers/dri/i965/brw_state_upload.c ;-) but I guess if it detected anything I would see assertion failed (not segfault). Also is there a way to doublecheck if DEBUG_INTEL=buf was in effect? any log message anywhere? full fresh xorg log is at http://www.onerussian.com/Linux/bugs/xorg.crash/Xorg.0.log not sure if it would be of any help but http://www.onerussian.com/Linux/bugs/xorg.crash/Xorg.valgrind.log shows valgrind output for me starting X with sudo valgrind /usr/bin/Xorg :0 -ac and then 1. opening xterm (there are some msgs from valgrind on that action). 2. closing xterm (followed with fresh Wacom General ...) 3. opening freesurfer which leads to fresh reports and segfault at the end with bt you already familiar with: ==11090== Invalid write of size 1 ==11090== at 0x1962FC04: copy_array_to_vbo_array (brw_draw_upload.c:263) ==11090== by 0x1962FEFE: brw_upload_vertices (brw_draw_upload.c:478) ==11090== by 0x1962F61F: brw_try_draw_prims (brw_draw.c:319) ==11090== by 0x1962F91E: brw_draw_prims (brw_draw.c:478) ==11090== by 0x196D0227: vbo_exec_DrawArrays (vbo_exec_array.c:264) ==11090== by 0x789599B: __glXDisp_DrawArrays (render2.c:248) ==11090== by 0x7879D24: DoRenderLarge (glxcmds.c:2055) ==11090== by 0x787D874: __glXDispatch (glxext.c:561) ==11090== by 0x44F801: Dispatch (dispatch.c:502) ==11090== by 0x436BD4: main (main.c:452) ==11090== Address 0x0 is not stack'd, malloc'd or (recently) free'd ok... a bit more... according to valgrind segfault happens at line 263 which points to the the body of the loop within copy_strided_array:
    for (i = 0; i < count; i++) {
     for (j = 0; j < size; j++)
        *dest++ = *src++;
     src += (stride - size);
      }
stride value got optimized but from where it is called it seems to correspond to
array->StrideA
and here is the reason for the problem:
(gdb) p array->StrideB
$18 = 36
(gdb) p size
$19 = 1572840
so -- we are shifting through 'src' backwards since stride is much smaller than size for some reason and hence sooner or later we arrive to 0x0 address:
src is opt out from 
(gdb) p &(array->Ptr)
$28 = (const GLubyte **) 0x19a12a8
actually we should need just
p (int)&(array->Ptr) / (size-array->StrideB)
steps to get there ;-) ... although I must confess I am not entirely sure since it might be trickery of optimization since after segfault values seems to be sane... trying to build the beast without optimization now
ok -- it has nothing to do with sizes explicitely... without optimization I get:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f4ddd39e6e0 (LWP 5000)]
0x00007f4dc890822a in copy_strided_array (dest=0x0, 
    src=0x7f4dc21ab054 ">>>@\021@a\027IBѿ\200\031\026?\222N?#*\207=>>>\021@HB\0375\032?QK?GW=>>>k\035@[zHB}L\027?3\031N?ZO=>>>@\021@a\027IBѿ5\032?QK?GW=>>>k\035@[zHB}M6\032?\231\035L?\030=>>>H+\030@\224HB"..., size=12, stride=36, count=983040) at brw_draw_upload.c:263
so dest is 0x0 right from the beginningFWIW: I added simple return on dest==0x0 and then it crashes with
#0  0x00007fca2449d1d5 in raise () from /lib/libc.so.6
No symbol table info available.
#1  0x00007fca2449e680 in abort () from /lib/libc.so.6
No symbol table info available.
#2  0x00007fca2449675f in __assert_fail () from /lib/libc.so.6
No symbol table info available.
#3  0x00007fca1143d520 in intel_bufferobj_unmap (ctx=0x2127f50, target=34962, obj=0x2424ae0) at intel_buffer_objects.c:183
        intel = (struct intel_context *) 0x2127f50
        intel_obj = (struct intel_buffer_object *) 0x2424ae0
        __PRETTY_FUNCTION__ = "intel_bufferobj_unmap"
#4  0x00007fca1145859b in copy_array_to_vbo_array (brw=0x2127f50, i=2, array=0x214d358, element_size=12, count=983040)
    at brw_draw_upload.c:356
        map = (GLubyte *) 0x0
        ctx = (GLcontext *) 0x2127f50
        vbo_array = (struct gl_client_array *) 0x213bff0
        size = 11796480
        vbo = (struct gl_buffer_object *) 0x2424ae0
        offset = 0
        new_stride = 12
        __PRETTY_FUNCTION__ = "copy_array_to_vbo_array"
assert seems to be at
   assert(obj->Pointer);
in
static GLboolean intel_bufferobj_unmap( GLcontext *ctx,
                    GLenum target,
                    struct gl_buffer_object *obj )
{
   struct intel_context *intel = intel_context(ctx);
   struct intel_buffer_object *intel_obj = intel_buffer_object(obj);
   assert(intel_obj);
   assert(intel_obj->buffer);
   assert(obj->Pointer);
   bmUnmapBufferAUB(intel, intel_obj->buffer, 0, 0);
   obj->Pointer = NULL;
   return GL_TRUE;
}
I guess you are running some manager such compiz. Could you start X by hand? Then run your apps, eg glxgears export INTEL_DEBUG=buf glxgears 2>&1 | tee buf.log It will log all information about graphics memory in buf.log doh ... why did I think DEBUG_INTEL should be set at build time? :) but I do not run compiz (kde + wmaker)... will do your test on my problematic software tomorrow -- thanks for the hint uff... apparently with this application it never gets to any of debug outputs for INTEL_DEBUG=buf. At first I thought that may be apps redirects stderr somewhere, but that is not the reason -- I've set breakpoints at printf and _mesa_printf, which get triggered whenever I run glxgears with INTEL_DEBUG=buf, but for the application of interest -- it never gets there -- thus nothing is printed May be your apps create a indirect context for rendering, and the backtrace you attached also tell us the rendering is done by X. may be -- I have not knowledge about internals of the software, but the crash happens within DRI intel module -- what other troubleshooting I could do to provide you with information to boil down the problem? This issue should go away with mesa master. Mark it as 'WONTFIX' because it only happens with 7_0 branch. how do you know that it doesn't happen with mesa master???? On Wed, 10 Dec 2008, bugzilla-daemon@freedesktop.org wrote: > http://bugs.freedesktop.org/show_bug.cgi?id=16056 > --- Comment #21 from haihao <haihao.xiang@intel.com> 2008-12-10 23:06:52 PST --- > This issue should go away with mesa master. > Mark it as 'WONTFIX' because it only happens with 7_0 branch. Maybe I should say "This issue should go away with GEM". Under legacy mode, only 32M graphics memories are allocated for 3D operations, including vertex buffers, texture buffers, state buffers... Obviously the fake memory manager fails to get free space for this vertex buffer which is too large (Some memories are allocated for other objects) in this case. Under GEM mode, the limitation of 32M doesn't exist any more, so I am sure this issue should go away. Could you try it with GEM enabled? If it still exists, feel free to reopen it. | 
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.
Bug reported by Yaroslav Halchenko in the Debian BTS, happens with mesa 7.0.3. He says: "I was trying to run freesurfer (1GB monster download which is not in Debian unfortunately) on some dataset on my laptop. When GL window appears system freezes (doesn't response to Ctrl-Alt-BS)" Debugging backtrace: Program received signal SIGSEGV, Segmentation fault. 0x00002b99662bfceb in copy_array_to_vbo_array (brw=0x13c7330, i=<value optimized out>, array=0x1fd0f58, element_size=12, count=983040) at brw_draw_upload.c:263 263 brw_draw_upload.c: No such file or directory. in brw_draw_upload.c #0 0x00002b18c3b19ceb in copy_array_to_vbo_array (brw=0x1b12fa0, i=<value optimized out>, array=0x1f63258, element_size=12, count=983040) at brw_draw_upload.c:263 map = (GLubyte *) 0x0 ctx = <value optimized out> size = 11796480 vbo = (struct gl_buffer_object *) 0xb7c570 offset = <value optimized out> __PRETTY_FUNCTION__ = "copy_array_to_vbo_array" #1 0x00002b18c3b1a22a in brw_upload_vertices (brw=0x1b12fa0, min_index=0, max_index=983039) at brw_draw_upload.c:478 input = (struct brw_vertex_element *) 0x1b27648 tmp = 0 vep = {header = {length = 0, opcode = 0}, ve = {{ve0 = { src_offset = 0, pad = 0, src_format = 0, pad0 = 0, valid = 0, vertex_buffer_index = 0}, ve1 = {dst_offset = 0, pad = 0, vfcomponent3 = 0, vfcomponent2 = 0, vfcomponent1 = 0, vfcomponent0 = 0}} <repeats 18 times>}} vbp = {header = {bits = {length = 0, opcode = 0}, dword = 0}, vb = {{ vb0 = {bits = {pitch = 0, pad = 0, access_type = 0, vb_index = 0}, dword = 0}, buffer = 0x0, offset = 0, max_index = 0, instance_data_step_rate = 0} <repeats 17 times>}} i = 3 ptr = (const void *) 0x2b18c8065060 interleave = 0 enabled = {0x1b275e8, 0x1b27628, 0x1b27648, 0x200000000, 0x40, 0x1d00000018, 0x2b18c5faa440, 0x2b18c3b020f6, 0x1d00000040, 0x2b18c3f20800, 0x40, 0x1a92720, 0x1b12fa0, 0x1440, 0x1f98320, 0x1c0, 0xb, 0x2b18c3b022b6, 0x200000076, 0x2b18c3b02823, 0x1f98dc0, 0x64, 0x1f98dc0, 0x1b12fa0, 0x1f98320, 0x2b18c3b18d5f, 0x0, 0x8, 0x1c0, 0x7c3b2299d, 0x144660020100, 0x1b12fa0} nr_enabled = 3 upload = {0x1b275e8, 0x1b27628, 0x1b27648, 0xdc3b32e48, 0xfe416800007, 0x10000040157, 0x10000000157, 0x300040117, 0x50, 0x300000020, 0x2b18c6029040, 0x2b18c3b020f6, 0x300000050, 0x2b18c3f20800, 0xc5faa280, 0x1e15220, 0x1b12fa0, 0x300000040, 0x50, 0x300000020, 0x50, 0x200000020, 0x40, 0x18, 0x200000050, 0x84, 0x901b12fa0, 0x2b18c3f20800, 0x1b12fa0, 0x1a92720, 0x1b12fa0, 0x2b18b0e239a0} nr_uploads = 3 __PRETTY_FUNCTION__ = "brw_upload_vertices" #2 0x00002b18c3b19769 in brw_try_draw_prims (ctx=0x1b12fa0, arrays=0x1c425e8, prim=0x7ffffb470710, nr_prims=1, ib=0x0, min_index=0, max_index=983039) at brw_draw.c:319 intel = <value optimized out> brw = (struct brw_context *) 0x0 retval = <value optimized out> i = <value optimized out> j = <value optimized out> __PRETTY_FUNCTION__ = "brw_try_draw_prims" __FUNCTION__ = "brw_try_draw_prims" #3 0x00002b18c3b19a00 in brw_draw_prims (ctx=0x1b12fa0, arrays=0x1c425e8, prim=0x7ffffb470710, nr_prims=1, ib=0x0, min_index=0, max_index=983039) at brw_draw.c:446 intel = <value optimized out> retval = <value optimized out> #4 0x00002b18c3baf8eb in vbo_exec_DrawArrays (mode=4, start=0, count=983040) at vbo/vbo_exec_array.c:264 ctx = (GLcontext *) 0x0 prim = {{mode = 4, indexed = 0, begin = 1, end = 1, weak = 0, pad = 0, start = 0, count = 983040}} #5 0x00002b18b1bf8295 in __glXDisp_DrawArrays ( pc=0x2b18c8065060 "@\021@a\027IBѿ\200\031\026?\222N?#*\207=>>>\021@HB\0375\032?QK?GW=>>>k\035@[zHB}L\027?3\031N?ZO=>>>@\021@a\027IBѿ5\032?QK?GW=>>>k\035@[zHB}M6\032?\231\035L?\030=>>>H+\030@\224HB^俠L\027?3\031N?"...) at ../../../GL/glx/render2.c:248 datatype = 5126 numVals = 3 numComponents = 3 primType = 4 stride = 36 i = 3 #6 0x00002b18b1bd9da6 in DoRenderLarge (cl=0x1bdae60, pc=0x277ea20 "\212ɾ\201O:$ݾ", do_swap=0) at ../../../GL/glx/glxcmds.c:2055 proc = (__GLXdispatchRenderProcPtr) 0xb3 client = (ClientPtr) 0x14a3e70 dataBytes = 3780 glxc = (__GLXcontext *) 0x14a9be0 error = <value optimized out> opcode = 193 sw = <value optimized out> #7 0x00002b18b1bdd72c in __glXDispatch (client=0x14a3e70) at ../../../GL/glx/glxext.c:561 stuff = (xGLXSingleReq *) 0x277ea10 opcode = <value optimized out> proc = ( __GLXdispatchSingleProcPtr) 0x2b18b1bd9de0 <__glXDisp_RenderLarge> cl = (__GLXclientState *) 0x1bdae60 retval = 1 #8 0x000000000044e310 in Dispatch () at ../../dix/dispatch.c:502 clientReady = <value optimized out> result = <value optimized out> client = (ClientPtr) 0x14a3e70 nready = 0 start_tick = 4840 #9 0x0000000000436add in main (argc=9, argv=0x7ffffb470df8, envp=<value optimized out>) at ../../dix/main.c:452 pScreen = <value optimized out> i = 1 error = 0 xauthfile = <value optimized out> alwaysCheckForInput = {0, 1}