Mysterious unconnected net and kicad crash

I just finished the initial routing of my very first 4-layer design. Well, at least that’s what I thought. Kicad continually says that there is one unconnected pin in the status item on the bottom of the screen. Sometimes (most of the time), it will tell me that GND is unconnected between pins 9 and 7 of U4. Other times (just once so far), the unconnected window remains empty. And, after I draw between (through two vias and another layer) those two pins to explicitly connect them, it crashes kicad when I click “List Unconnected”. To make things weirder, when I switch to the default canvas, the Unconnected status item goes to 0. When I switch back to opengl, it becomes 1 again.

Does anyone know something about this? Is this a known bug or issue that can be worked around? I have recurring nightmares of spending $100 on boards and having them not work because of an unconnected net that I missed or ignored (it happened once to me 8 years ago and it’s haunted me) and so it would really give me some peace of mind if that “Unconnected” status would say “0”

Here is the portion of the layout in question:

The entire layout can be found here under the “kicad” folder:

Here is the coredump (sorry its so giant):

Oct 18 23:51:07 kcuzner-desktop systemd-coredump[6976]: Process 6520 (kicad) of user 1000 dumped core.
                                                        
                                                        Stack trace of thread 6520:
                                                        #0  0x00007f2d73df1770 n/a (_pcbnew.kiface)
                                                        #1  0x00007f2d73df177c n/a (_pcbnew.kiface)
                                                        #2  0x00007f2d73df177c n/a (_pcbnew.kiface)
                                                        #3  0x00007f2d73df0e4c n/a (_pcbnew.kiface)
                                                        #4  0x00007f2d73821253 n/a (_pcbnew.kiface)
                                                        #5  0x00007f2d73821639 n/a (_pcbnew.kiface)
                                                        #6  0x00007f2d7366eabe n/a (_pcbnew.kiface)
                                                        #7  0x00007f2da13dc43e _ZNK16wxAppConsoleBase16CallEventHandlerEP12wxEvtHandlerR14wxEventFunctorR7wxEvent (libwx_baseu-3.0.so.0)
                                                        #8  0x00007f2da1562a77 _ZN12wxEvtHandler23ProcessEventIfMatchesIdERK21wxEventTableEntryBasePS_R7wxEvent (libwx_baseu-3.0.so.0)
                                                        #9  0x00007f2da1562e5e _ZN12wxEvtHandler23SearchDynamicEventTableER7wxEvent (libwx_baseu-3.0.so.0)
                                                        #10 0x00007f2da1562eee _ZN12wxEvtHandler11TryHereOnlyER7wxEvent (libwx_baseu-3.0.so.0)
                                                        #11 0x00007f2da1562fb3 _ZN12wxEvtHandler19ProcessEventLocallyER7wxEvent (libwx_baseu-3.0.so.0)
                                                        #12 0x00007f2da1563015 _ZN12wxEvtHandler12ProcessEventER7wxEvent (libwx_baseu-3.0.so.0)
                                                        #13 0x00007f2da1562d77 _ZN12wxEvtHandler18SafelyProcessEventER7wxEvent (libwx_baseu-3.0.so.0)
                                                        #14 0x00007f2da1afd3a7 n/a (libwx_gtk2u_core-3.0.so.0)
                                                        #15 0x00007f2d9f9dc1b4 n/a (libgobject-2.0.so.0)
                                                        #16 0x00007f2d9f9f68ed g_signal_emit_valist (libgobject-2.0.so.0)
                                                        #17 0x00007f2d9f9f6fdf g_signal_emit (libgobject-2.0.so.0)
                                                        #18 0x00007f2d9ff5f025 n/a (libgtk-x11-2.0.so.0)
                                                        #19 0x00007f2d9f9dbf85 g_closure_invoke (libgobject-2.0.so.0)
                                                        #20 0x00007f2d9f9ed96b n/a (libgobject-2.0.so.0)
                                                        #21 0x00007f2d9f9f6bfc g_signal_emit_valist (libgobject-2.0.so.0)
                                                        #22 0x00007f2d9f9f6fdf g_signal_emit (libgobject-2.0.so.0)
                                                        #23 0x00007f2d9ff5df89 n/a (libgtk-x11-2.0.so.0)
                                                        #24 0x00007f2da00037ac n/a (libgtk-x11-2.0.so.0)
                                                        #25 0x00007f2d9f9dbf85 g_closure_invoke (libgobject-2.0.so.0)
                                                        #26 0x00007f2d9f9ee38d n/a (libgobject-2.0.so.0)
                                                        #27 0x00007f2d9f9f669f g_signal_emit_valist (libgobject-2.0.so.0)
                                                        #28 0x00007f2d9f9f6fdf g_signal_emit (libgobject-2.0.so.0)
                                                        #29 0x00007f2da011b8cc n/a (libgtk-x11-2.0.so.0)
                                                        #30 0x00007f2da0001f74 gtk_propagate_event (libgtk-x11-2.0.so.0)
                                                        #31 0x00007f2da000232b gtk_main_do_event (libgtk-x11-2.0.so.0)
                                                        #32 0x00007f2d9fc7946c n/a (libgdk-x11-2.0.so.0)
                                                        #33 0x00007f2d9f294e67 g_main_context_dispatch (libglib-2.0.so.0)
                                                        #34 0x00007f2d9f2950d0 n/a (libglib-2.0.so.0)
                                                        #35 0x00007f2d9f2953f2 g_main_loop_run (libglib-2.0.so.0)
                                                        #36 0x00007f2da00013a7 gtk_main (libgtk-x11-2.0.so.0)
                                                        #37 0x00007f2da1a87165 _ZN14wxGUIEventLoop5DoRunEv (libwx_gtk2u_core-3.0.so.0)
                                                        #38 0x00007f2da141e223 _ZN15wxEventLoopBase3RunEv (libwx_baseu-3.0.so.0)
                                                        #39 0x00007f2da13e3306 _ZN16wxAppConsoleBase8MainLoopEv (libwx_baseu-3.0.so.0)
                                                        #40 0x0000000000454169 n/a (kicad)
                                                        #41 0x00007f2da14701e0 _Z7wxEntryRiPPw (libwx_baseu-3.0.so.0)
                                                        #42 0x000000000043747e n/a (kicad)
                                                        #43 0x00007f2da0533291 __libc_start_main (libc.so.6)
                                                        #44 0x000000000043c21a _start (kicad)
                                                        
                                                        Stack trace of thread 6551:
                                                        #0  0x00007f2d7681c56e futex_wait (libgomp.so.1)
                                                        #1  0x00007f2d76819d70 gomp_thread_start (libgomp.so.1)
                                                        #2  0x00007f2da08b8454 start_thread (libpthread.so.0)
                                                        #3  0x00007f2da05fb7df __clone (libc.so.6)
                                                        
                                                        Stack trace of thread 6531:
                                                        #0  0x00007f2da05f248d poll (libc.so.6)
                                                        #1  0x00007f2d9f295066 n/a (libglib-2.0.so.0)
                                                        #2  0x00007f2d9f29517c g_main_context_iteration (libglib-2.0.so.0)
                                                        #3  0x00007f2d9f2951c1 n/a (libglib-2.0.so.0)
                                                        #4  0x00007f2d9f2bb345 n/a (libglib-2.0.so.0)
                                                        #5  0x00007f2da08b8454 start_thread (libpthread.so.0)
                                                        #6  0x00007f2da05fb7df __clone (libc.so.6)
                                                        
                                                        Stack trace of thread 6532:
                                                        #0  0x00007f2da05f248d poll (libc.so.6)
                                                        #1  0x00007f2d9f295066 n/a (libglib-2.0.so.0)
                                                        #2  0x00007f2d9f2953f2 g_main_loop_run (libglib-2.0.so.0)
                                                        #3  0x00007f2d9d1b07c6 n/a (libgio-2.0.so.0)
                                                        #4  0x00007f2d9f2bb345 n/a (libglib-2.0.so.0)
                                                        #5  0x00007f2da08b8454 start_thread (libpthread.so.0)
                                                        #6  0x00007f2da05fb7df __clone (libc.so.6)
                                                        
                                                        Stack trace of thread 6550:
                                                        #0  0x00007f2d7681c56e futex_wait (libgomp.so.1)
                                                        #1  0x00007f2d76819d70 gomp_thread_start (libgomp.so.1)
                                                        #2  0x00007f2da08b8454 start_thread (libpthread.so.0)
                                                        #3  0x00007f2da05fb7df __clone (libc.so.6)
                                                        
                                                        Stack trace of thread 6552:
                                                        #0  0x00007f2d7681c56e futex_wait (libgomp.so.1)
                                                        #1  0x00007f2d76819d70 gomp_thread_start (libgomp.so.1)
                                                        #2  0x00007f2da08b8454 start_thread (libpthread.so.0)
                                                        #3  0x00007f2da05fb7df __clone (libc.so.6)
                                                        
                                                        Stack trace of thread 6934:
                                                        #0  0x00007f2da05f6f19 syscall (libc.so.6)
                                                        #1  0x00007f2d9f2d91ea g_cond_wait_until (libglib-2.0.so.0)
                                                        #2  0x00007f2d9f269a39 n/a (libglib-2.0.so.0)
                                                        #3  0x00007f2d9f26a05c g_async_queue_timeout_pop (libglib-2.0.so.0)
                                                        #4  0x00007f2d9f2bbe0d n/a (libglib-2.0.so.0)
                                                        #5  0x00007f2d9f2bb345 n/a (libglib-2.0.so.0)
                                                        #6  0x00007f2da08b8454 start_thread (libpthread.so.0)
                                                        #7  0x00007f2da05fb7df __clone (libc.so.6)
                                                        
                                                        Stack trace of thread 6534:
                                                        #0  0x00007f2da05f248d poll (libc.so.6)
                                                        #1  0x00007f2d8f28f121 n/a (libpulse.so.0)
                                                        #2  0x00007f2d8f2808f1 pa_mainloop_poll (libpulse.so.0)
                                                        #3  0x00007f2d8f280f8e pa_mainloop_iterate (libpulse.so.0)
                                                        #4  0x00007f2d8f281040 pa_mainloop_run (libpulse.so.0)
                                                        #5  0x00007f2d8f28f069 n/a (libpulse.so.0)
                                                        #6  0x00007f2d8f02ded8 n/a (libpulsecommon-9.0.so)
                                                        #7  0x00007f2da08b8454 start_thread (libpthread.so.0)
                                                        #8  0x00007f2da05fb7df __clone (libc.so.6)

I am using kicad 4.0.4 under Arch Linux. I’ve been using the OpenGL canvas for this.

OpenGL canvas does not correctly report unconnected nets, use default canvas and DRC.

This is a 4 layer board but you have a copper zone for ground and power and signal traces all on one layer?

1 Like

Ah ok, good to know. I’ll trust the default canvas for that stuff then.

As for why I laid it out the way I did: it was my first go at trying to cram 145 parts into a 32mm circle, keeping all my DFNs on the top so I only have to use the hot air gun on one side (I planned to hand solder the other side). I did manage to preserve an unbroken ground plane on the 3rd layer, but the power plane on the 2nd layer was needed for additional routing and got split. I’m going to do it over again and see if I can avoid splitting it like that. The outer layers were easier to route using planes for the ground (and sharing vias), hence why you see a ground pour with power and signal traces.

Is it a better practice to keep ground planes off the top and bottom layers and just directly route with traces to vias? I’ve seen it done both ways at work on boards with layer counts ranging from 4 to 26 and I haven’t been there long enough to have time to ask about the tradeoffs and reasons.