← Back to team overview

kicad-developers team mailing list archive

pcbnew and cvpcb 3D window crash with S/W GL renderer


After upgrading (H/W and S/W) my home PC, I have a problem with the 3D windows in both pcbnew and cvpcb.

The Xorg DRI/3Daccel stuff doesn't work (yet) on the new gfx board (ATI RV730XT chip), so GL is using the Software Renderer, which causes pcbnew/cvpcbto crash with an X11 BadMatch error when opening the 3D window - see gdb trace below.

On my laptop (Intel gfx), which has received the same S/W upgrade (reinstall to newest Debian stable/testing), the 3D window only sort of works, even though the Xorg DRI driver works there.
The 3D window has gray background (usually black), and the part doesn't getdrawn.
If I switch between parts (cvpcb), some of the new part does get drawn, butwithout clearing the previous window contents first.
Zoom and rotate does work, but w/o any changes to the window, except if I do a part switch (cvpcb).

On the machine at work, which has a very old gfx card (ATI Rage 128 AGPx4),the pcbnew/cvpcb 3D windows still works just fine (and fast).

On all three machines, the mesademos glxgears and the whitedune VRML browser/editor works just fine.

The problem is present in both the Debian compiled kicad package and SVN releases 2455 (14/3) and 2473 (23/3), that I've compiled myself.

The S/W upgrade has upgraded Xorg from 7.3 to 7.5 and wxWidgets from to

I've tried running gdb on cvpcb to nail down the problem, but all I get is this, so it seems the "break gdk_x_error" doesn't work:

$ gdb --args cvpcb --sync
(gdb) break gdk_x_error
Function "gdk_x_error" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y

Breakpoint 1 (gdk_x_error) pending.
(gdb) run
Starting program: /usr/local/kicad-2473-2010-03-23/bin/cvpcb --sync
[Thread debugging using libthread_db enabled]
[New Thread 0xb564cb70 (LWP 14172)]
[New Thread 0xb4cffb70 (LWP 14173)]
[Thread 0xb4cffb70 (LWP 14173) exited]
[New Thread 0xb4cffb70 (LWP 14174)]
[New Thread 0xb44feb70 (LWP 14175)]
[Thread 0xb4cffb70 (LWP 14174) exited]
[Thread 0xb44feb70 (LWP 14175) exited]
[New Thread 0xb44feb70 (LWP 14176)]
[Thread 0xb564cb70 (LWP 14172) exited]
[New Thread 0xb564cb70 (LWP 14177)]
[Thread 0xb564cb70 (LWP 14177) exited]
[New Thread 0xb564cb70 (LWP 14178)]
[Thread 0xb44feb70 (LWP 14176) exited]
[New Thread 0xb44feb70 (LWP 14179)]
[Thread 0xb564cb70 (LWP 14178) exited]
The program 'cvpcb' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
(Details: serial 196456 error_code 8 request_code 73 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.)
[Thread 0xb44feb70 (LWP 14179) exited]

Program exited with code 01.
(gdb) bt
No stack.
(gdb) quit

I saw a note somewhere, that --sync just causes the 3D driver to set a flagand then does nothing, so maybe that's why the gdb break doesn't work.

Any ideas ?


Follow ups