On Thu, Jul 30, 2009 at 4:36 PM, Albert Bachand<[email protected]> wrote: > I'm working on supporting multiple X displays (http://crbug.com/15781). I've > modified process_singleton_posix.cc to forward the display name back to the > host which then pushes it all the way to browser_window_gtk.cc and assigns > the browser window to that display. That part seems to work, the browser > window appears on the local display. But the host process immediately dies > with a cryptic X error: > The program 'chrome' received an X Window System error. > This probably reflects a bug in the program. > The error was 'BadDrawable (invalid Pixmap or Window parameter)'. > (Details: serial 1972 error_code 9 request_code 62 minor_code 0) > (Note to programmers: normally, X errors are reported asynchronously; > that is, you will receive the error a while after causing it. > To debug your program, run it with the --sync command line > option to change this behavior. You can then get a meaningful > backtrace from your debugger if you break on the gdk_x_error() function.) > I've tried a few things to break on that function and get a stack trace in > gdb, but nothing seems to work. Neither --renderer-cmd-prefix='gdb --args' > nor modifying zygote to always append --sync to the forked chrome process > worked. I'm not sure what to try next. I'm on hardy (64-bits), would > compiling 32-bit versions of glib and gtk be worth it? Any other ideas?
Renderer subprocesses don't have any access to X, so they can't be involved in this. So thankfully, you'll only need to worry about the browser process. The browser *should* obey --sync, but I can't promise it works. To set a breakpoint on that gdk function, I don't believe you need a debug version. But just in case, I put up what worked for me at http://code.google.com/p/chromium/wiki/LinuxDebuggingGtk under "Building your own GTK". Some other hints to try: - pass --single-process to run the renderers in the same process as the browser. this will help keep you within a single gdb session - export CHROME_IPC_LOGGING=1 into your environment to have chrome spew out all IPC messages it's passing around. If I had to guess I'd say it's probably coming from when we first start poking at X to display content we got from the renderer. If you post which IPC messages happen around the time you crash, maybe we can guess more. --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: [email protected] View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---
