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()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.