Re: Crash with multitile-sort
Paul Melis <[email protected]>
| Newsgroups | gmane.comp.graphics.chromium.user |
|---|---|
| Message-ID | <[email protected]> |
Brian Paul wrote: > Paul Melis wrote: > >> Paul Melis wrote: >> >> >>> Hello, >>> While attempting to create a multi-tilesort configuration based on >>> the multitilesort.conf file included with CR1.9 two things happen: >>> 1. I get a warning about the state tracker being re-initialized >>> 2. One of the crservers crashes (backtrace from the coredump shows >>> it to be in crSPUCopyDispatchTable()). >>> >>> >> >> Just a bit more info, the crash is happening in spu_loader/spucopy.c, >> crSPUCopyDispatchTable(). >> In the first for-loop, the assignment temp = dst->copy_of->copyList >> sets temp to 0x1, which is later used as temp->copy. >> >> #0 0x5557f040 in crSPUCopyDispatchTable (dst=0x80d62c0, >> src=0x817d8c8) at spucopy.c:630 >> 630 if (temp->copy == dst) >> (gdb) bt >> #0 0x5557f040 in crSPUCopyDispatchTable (dst=0x80d62c0, >> src=0x817d8c8) at spucopy.c:630 >> #1 0x08087fc5 in crStateDiffAPI (api=0x817d8c8) at state_flush.c:33 >> #2 0x080515e0 in crServerInit (argc=1, argv=0xffffd494) at >> server_main.c:240 >> #3 0x08051655 in CRServerMain (argc=1, argv=0xffffd494) at >> server_main.c:254 >> #4 0x08051012 in main (argc=1, argv=0xffffd494) at main.c:22 >> (gdb) p temp >> $1 = (struct _copy_list_node *) 0x1 >> (gdb) p dst->copy_of >> $2 = (struct _spu_dispatch_table *) 0xffffa520 >> (gdb) > > > The demo was crashing for me too, but in a different way. I've checked > in fixes to tilesortspu_get.c and state_bufferobject.c that fixed > things here. Can you try the current CVS code? I'm sorry to say it doesn't fix the crash I'm experiencing. The stack trace above is still valid. I've attached a reduced version of my original configuration script. This shows the crash for me when running with e.g. "python multitilesort_crash.conf glxgears", but other apps fail in the same way. I had some trouble figuring out how exactly to set up the tiling parameters for this setup, so I might be doing something unusual there. Paul -- Paul Melis VR Specialist, Center for High-Performance Computing & Visualization, University of Groningen, The Netherlands T: +31 50 363 9298 E: [email protected] W: http://www.rug.nl/rc/hpcv/index ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Chromium-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/chromium-users
multitilesort_crash.conf
(text/plain, 3.7 KB)
#!/usr/bin/env python
import sys
import math
sys.path.append('/home/rugrchpc/melis/cr-cvs/mothership/server')
from mothership import *
print "CR bin dir:", crbindir
print "CR lib dir:", crlibdir
import crmatrix
# networking params
MTU = 3*1024*1024
#
# Main chromium object
#
cr = CR()
cr.MTU(MTU)
#
# Application node
#
app = ' '.join(sys.argv[1:])
app_node = CRApplicationNode()
app_node.StartDir(crbindir)
app_node.SetApplication(app)
app_node.Conf('track_window_size', 1)
cr.AddNode(app_node)
#
# Master display node
#
wall_width = 1024
wall_height = 768
master_display_node = CRNetworkNode('localhost')
master_render_spu = SPU('render')
#master_render_spu.Conf('fake_window_dims', [wall_width, wall_height])
master_render_spu.Conf('render_to_app_window', 1)
master_render_spu.Conf('window_geometry', [0, 0, 640, 480])
master_display_node.AddSPU(master_render_spu)
master_display_node.AddTile(0, 0, 640, 480)
cr.AddNode(master_display_node)
#
# First tilesort SPU, splits the stream in two identical ones
# - One for unaltered display by the master node
# - Other stream goes to a second tilesort after being filtered to
# rip out the 2D content before distributing to the slave nodes
#
def layout_tiles_identical(mural_width, mural_height):
"""Return 2 identical tiles, in effect 'splitting' the
OpenGL stream into 2 identical streams.
Returns a list of tuples of (server_index, x, y, width, height)"""
tiles = []
tiles.append( (0, 0, 0, mural_width, mural_height) )
tiles.append( (1, 0, 0, mural_width, mural_height) )
return tiles
split_tilesort_spu = SPU('tilesort')
split_tilesort_spu.TileLayoutFunction(layout_tiles_identical)
app_node.AddSPU(split_tilesort_spu)
#
# Slave tilesort node
#
slave_tilesort_node = CRNetworkNode('localhost')
# insert 3D content filter
#filter3dspu = SPU('filter3d')
#slave_tilesort_node.AddSPU(filter3dspu)
# add tile-sorting based on frusta
slave_tilesort_spu = SPU('tilesort')
slave_tilesort_spu.Conf('fake_window_dims', [wall_width, wall_height])
#slave_tilesort_spu.Conf('fake_window_dims', [640, 480])
# Do bucketing by testing bounding boxes against viewing frustums
slave_tilesort_spu.Conf('bucket_mode', 'Frustum')
slave_tilesort_node.AddSPU(slave_tilesort_spu)
slave_tilesort_node.AddTile(0, 0, 640, 480)
cr.AddNode(slave_tilesort_node)
# Add master and slave nodes to first tilesort SPU
split_tilesort_spu.AddServer(master_display_node, protocol='tcpip', port=7000)
split_tilesort_spu.AddServer(slave_tilesort_node, protocol='tcpip', port=7001)
master_display_node.Conf('optimize_bucket', 0)
slave_tilesort_node.Conf('optimize_bucket', 0)
#
# Add each of the 3 slave nodes
#
#for nodenum in [1]:
for nodenum in [1, 2, 3]:
slave_node = CRNetworkNode('node%d' % nodenum)
slave_node.Conf('optimize_bucket', 0)
slave_node.AddTile(0, 0, wall_width, wall_height)
#
# render SPU
#
render_spu = SPU('render')
render_spu.Conf('fullscreen', 1)
slave_node.AddSPU(render_spu)
#
# viewpoint offsets and projection matrices for theatre projectors
#
cr.AddNode(slave_node)
slave_tilesort_spu.AddServer(slave_node, protocol='tcpip', port=7001+nodenum)
#
# autostart
#
slave_node.AutoStart( [
"/usr/bin/rsh", "node%d" % nodenum,
"/bin/sh -c 'DISPLAY=:0.0 CRMOTHERSHIP=master LD_LIBRARY_PATH=%s %s/crserver'" % (crlibdir, crbindir)
] )
#
# Autostart
#
args = "DISPLAY=:0.0 CRMOTHERSHIP=master LD_LIBRARY_PATH=%s %s/crserver" % (crlibdir, crbindir)
master_display_node.AutoStart( [ '/bin/sh', '-c', args ] )
slave_tilesort_node.AutoStart( [ '/bin/sh', '-c', args ] )
app_node.AutoStart( [
"/bin/sh", "-c", 'CRMOTHERSHIP=localhost LD_LIBRARY_PATH=%s:$LD_LIBRARY_PATH %s/crappfaker' % (crlibdir, crbindir)
] )
cr.Go()