Hi all,

First off, for non-Intel-graphics-card users and non-Stage-developers, this post might not be useful.

I got a problem where Stage-3.2.2 was aborting when trying to render the 3D structures of the map (bitmap "insert_image_filename_here.pgm") file with a long backtrace ending up with the Intel i965 DRM/DRI driver's internal functions on Ubuntu 10.04.

The quick fix on the forums was to turn DRI to "off" in xorg.conf. However, since I need to run 3D rendering simultaneously (e.g., rviz in ROS), I need direct rendering to be activated. To reproduce the error, run Stage-3.2.2 on an Intel 965GM chipset and load any map which will generate a lot of polygons, e.g. 10,000 separated "wall" pixels in a PGM file. Mine crashed for as low as 120 "blocks".

After debugging and digging around (including compiling the latest DRM and Mesa drivers), it looks like the i965 DRI/DRM implementation does not handle large display lists well and throws a SIGABRT when trying to copy/move/reallocate vertex buffers.

To remedy this on my local copy of Stage-3.2.2, I changed the code in blocks.cc and blockgroup.cc to have one 'displaylist' per block and have the blockgroup 'displaylist' call the containing ones hierarchically. This makes the error go away for the map I have (tested with up to 10,000 blocks), but I have not tested it for larger maps. I thought this might help others who have had the same problem with Intel chipsets and relatively large maps.

I cc'ed the developers list since I'm open to discussion and I would be glad to help out.