Created attachment 99951 [details]
avoid assert() crash by dynamically adjusting image chunk size
The maximum number of "commands" that can be queued at once is fixed at compile time at MAX_RELOCS. However, during the creation of an image object in qxl_image_create(), the image is split into commands of maximum size 512*512. For a large dual-head system, it is easy to create an image for which the number of chunks will result in an overflow of MAX_RELOCS number of "commands".
Identify this scenario and dynamically increase the chunk size to avoid the overflow, and the resulting assert() which crashes Xorg.
Note: the debugging statement is currently enabled in this patch.
This is almost certainly the cause of:
Author: David Mansfield <email@example.com>
Date: Tue Jun 3 10:05:42 2014 -0400
Dynamically adjust chunk size to avoid command buffer overflow.