← Back to team overview

kicad-developers team mailing list archive

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


viking632 wrote:
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/cvpcb to 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 get drawn.
If I switch between parts (cvpcb), some of the new part does get drawn, but without 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 flag and then does nothing, so maybe that's why the gdb break doesn't work.

Any ideas ?


One has to ask, at which software boundary is this problem. Kicad to wxWidget, wxWidgets to OpenGL, or Kicad to OpenGL, GTK+ to X, or wxWidgets to GTK+?

Guessing, it seems like maybe the problem could be at the last mentioned boundary, or at the second to last.

Therefore you might rebuild wxWidgets from source.

In the absence of concrete information, I thought you might at least like a guess, and that's all this is.

You could also simply change distros.