XQuartz: Added debugging output to the crash log to help track down two crashes, since people don't often report their system.log spew.

This commit is contained in:
Jeremy Huddleston 2008-08-29 19:43:13 -07:00
parent 25eccf12c8
commit aaf0f71db1
4 changed files with 62 additions and 8 deletions

View File

@ -2373,13 +2373,25 @@ WindowHasNewCursor(WindowPtr pWin)
PostNewCursor();
}
#ifdef XQUARTZ
#include <string.h>
extern char *__crashreporter_info__;
extern const char *__crashreporter_info__base;
extern int __crashreporter_info__len;
#endif
_X_EXPORT void
NewCurrentScreen(ScreenPtr newScreen, int x, int y)
{
sprite.hotPhys.x = x;
sprite.hotPhys.y = y;
ErrorF("noPanoramiXExtension=%d newScreen=%p\n", noPanoramiXExtension, newScreen);
ErrorF("newScreen->myNum=%d\n", newScreen->myNum);
#ifdef XQUARTZ
/* We're seeing a crash here, but I'm not sure what's causing it... so putting in some debugging */
snprintf(__crashreporter_info__, __crashreporter_info__len, "%s\n\nNewCurrentScreen debug data\nnoPanoramiXExtension=%d\nnewScreen=%p\nnewScreen->myNum=%d\n",
__crashreporter_info__base, noPanoramiXExtension, newScreen,newScreen->myNum);
ErrorF("NewCurrentScreen debug data\nnoPanoramiXExtension=%d\nnewScreen=%p\nnewScreen->myNum=%d\n",
noPanoramiXExtension, newScreen, newScreen->myNum);
#endif
#ifdef PANORAMIX
if(!noPanoramiXExtension) {
sprite.hotPhys.x += panoramiXdataPtr[newScreen->myNum].x -

View File

@ -153,8 +153,6 @@ const int NUMFORMATS = sizeof(formats)/sizeof(formats[0]);
#define XSERVER_VERSION "?"
#endif
const char *__crashreporter_info__ = "X.Org X Server " XSERVER_VERSION " Build Date: " BUILD_DATE;
void DDXRingBell(int volume, int pitch, int duration) {
// FIXME -- make some noise, yo
}

View File

@ -59,6 +59,18 @@ extern int noPanoramiXExtension;
#define DEFAULT_STARTX "/usr/X11/bin/startx"
#define DEFAULT_SHELL "/bin/sh"
#ifndef BUILD_DATE
#define BUILD_DATE ""
#endif
#ifndef XSERVER_VERSION
#define XSERVER_VERSION "?"
#endif
const int __crashreporter_info__len = 4096;
const char *__crashreporter_info__base = "X.Org X Server " XSERVER_VERSION " Build Date: " BUILD_DATE;
char __crashreporter_info__buf[4096];
char *__crashreporter_info__ = __crashreporter_info__buf;
#define DEBUG 1
static int execute(const char *command);
@ -389,7 +401,10 @@ int main(int argc, char **argv, char **envp) {
// The server must not run the PanoramiX operations.
noPanoramiXExtension = TRUE;
/* Setup the initial crasherporter info */
strlcpy(__crashreporter_info__, __crashreporter_info__base, __crashreporter_info__len);
fprintf(stderr, "X11.app: main(): argc=%d\n", argc);
for(i=0; i < argc; i++) {
fprintf(stderr, "\targv[%u] = %s\n", (unsigned)i, argv[i]);
@ -397,7 +412,7 @@ int main(int argc, char **argv, char **envp) {
listenOnly = TRUE;
}
}
mp = checkin_or_register(SERVER_BOOTSTRAP_NAME);
if(mp == MACH_PORT_NULL) {
fprintf(stderr, "NULL mach service: %s", SERVER_BOOTSTRAP_NAME);

View File

@ -131,16 +131,45 @@ RootlessNativeWindowStateChanged (WindowPtr pWin, unsigned int state)
pWin->rootlessUnhittable = winRec->is_offscreen;
}
#ifdef XQUARTZ
#include <string.h>
extern char *__crashreporter_info__;
extern const char *__crashreporter_info__base;
extern int __crashreporter_info__len;
#endif
void RootlessNativeWindowMoved (WindowPtr pWin) {
xp_box bounds;
int sx, sy, err;
XID vlist[2];
Mask mask;
ClientPtr client, pClient;
RootlessWindowRec *winRec = WINREC(pWin);
RootlessWindowRec *winRec;
#ifdef XQUARTZ
/* We're seeing a crash here, but I'm not sure what's causing it... so putting in some debugging */
snprintf(__crashreporter_info__, __crashreporter_info__len,
"%s\n\RootlessNativeWindowMoved debug data\npWin=%p\n",
__crashreporter_info__base, pWin);
ErrorF("RootlessNativeWindowMoved debug data\npWin=%p\n", pWin);
#endif
winRec = WINREC(pWin);
#ifdef XQUARTZ
/* We're seeing a crash here, but I'm not sure what's causing it... so putting in some debugging */
snprintf(__crashreporter_info__, __crashreporter_info__len, "%swinRec=%p\nwinRec->wid=%d\n", __crashreporter_info__, winRec, winRec ? (int)winRec->wid : 0);
ErrorF("winRec=%p\nwinRec->wid=%d\n", winRec, winRec ? (int)winRec->wid : 0);
#endif
if (xp_get_window_bounds ((xp_window_id)winRec->wid, &bounds) != Success) return;
#ifdef XQUARTZ
/* We're seeing a crash here, but I'm not sure what's causing it... so putting in some debugging */
snprintf(__crashreporter_info__, __crashreporter_info__len, "%spWin->drawable.pScreen=%p\npWin->drawable.pScreen->myNum=%d\n", __crashreporter_info__, pWin->drawable.pScreen, pWin->drawable.pScreen ? pWin->drawable.pScreen->myNum : 0);
ErrorF("pWin->drawable.pScreen=%p\npWin->drawable.pScreen->myNum=%d\n", pWin->drawable.pScreen, pWin->drawable.pScreen ? pWin->drawable.pScreen->myNum : 0);
#endif
sx = dixScreenOrigins[pWin->drawable.pScreen->myNum].x + darwinMainScreenX;
sy = dixScreenOrigins[pWin->drawable.pScreen->myNum].y + darwinMainScreenY;
@ -153,7 +182,7 @@ void RootlessNativeWindowMoved (WindowPtr pWin) {
/* pretend we're the owner of the window! */
err = dixLookupClient(&pClient, pWin->drawable.id, NullClient, DixUnknownAccess);
if(err != Success) {
ErrorF("RootlessNativeWindowMoved(): Failed to lookup window: 0x%x\n", pWin->drawable.id);
ErrorF("RootlessNativeWindowMoved(): Failed to lookup window: 0x%x\n", (unsigned int)pWin->drawable.id);
return;
}