Crash : PCBNew crashes consistently on startup with 'canvas_type' entry in its config file

Bug #1483015 reported by Chris Goddard
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
KiCad
Fix Released
Critical
Maciej Suminski

Bug Description

Crash : PCBNew crashes consistently on startup with 'canvas_type' entry in its config file.

If the canvas_type entry is removed from '~/.config/kicad/pcbnew' then PCBNew starts as expected. If the canvas type is then changed to GAL and PCBNEW closed, on next startup it crashes immediately.

Editing the canvas_type entry and changing the number at the end does not fix it, the entry has to be removed.

This happens with both a self built version and an Ubuntu PPA version. BZR 6077.

However it does not crash with a debug build built from the same version.

Tags: cern gal

Related branches

Chris Goddard (chriy)
Changed in kicad:
importance: Undecided → Critical
Chris Goddard (chriy)
description: updated
tags: added: cern gal
Revision history for this message
Stefan Breitegger (tuxstef) wrote :

Debugger output:

gdb kicad/kicad
GNU gdb (Ubuntu 7.9-1ubuntu1) 7.9
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from kicad/kicad...done.
(gdb) run
Starting program: /data/src/kicad/kicad.bzr/build/debug/kicad/kicad
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
LIB_ENV_VAR:'/data/src/kicad/kicad.bzr/build/debug/kicad'
20:51:03: Debug: Adding locale lookup path: /usr/share/kicad/internat
20:51:03: Debug: Failed to connect to session manager: SESSION_MANAGER environment variable not defined
/usr/share/themes/Lubuntu-default/gtk-2.0/apps/thunar.rc:55: error: invalid string constant "thunar-statusbar", expected valid string constant
ElemsClear: clearing all _ELEMS for project
SetProjectFullName: old:'' new:'/home/stefan/projekte/dampfe/kicad/dampfe.pro'
20:51:04: Debug: dampfe.pro: noname.pro
FileWatcherReset: add '/home/stefan/projekte/dampfe/kicad/gerber'
FileWatcherReset: watched paths:
 /home/stefan/projekte/dampfe/kicad/gerber/
 /home/stefan/projekte/dampfe/kicad/
[New Thread 0x7fffeb2e3700 (LWP 15180)]
[New Thread 0x7fffebae4700 (LWP 15178)]
[New Thread 0x7fffec2e5700 (LWP 15177)]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4d5d558 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0

Changed in kicad:
assignee: nobody → Maciej Sumiński (orsonmmz)
status: New → In Progress
Revision history for this message
Chris Goddard (chriy) wrote :

The only output I get when it crashes is :

 ./pcbnew
*** stack smashing detected ***: ./pcbnew terminated
Aborted (core dumped)

As I said before, it doesn't crash for me with a debug build.

Changed in kicad:
status: In Progress → Fix Committed
Revision history for this message
Chris Goddard (chriy) wrote :

Just re-built with that fix and I no longer get a crash when opening PCBNew directly.

Revision history for this message
Maciej Suminski (orsonmmz) wrote :

Great! Thank you for confirmation.

Revision history for this message
Jon Neal (reportingsjr) wrote :
Download full text (4.3 KiB)

Hmm, not sure this is fixed. I am running the latest rev (BZR 6083) and I get a crash when I try to open pcbnew and canvas_type is in the config file.

Upon opening pcbnew I immediately get an assertion with the following backtrace:
(gdb) bt
#0 0x00007ffff3a92309 in raise () at /lib64/libpthread.so.0
#1 0x00007ffff6c3bf48 in wxGUIAppTraits::ShowAssertDialog(wxString const&) ()
    at /lib64/libwx_gtk2u_core-3.0.so.0
#2 0x00007ffff62fd5a2 in ShowAssertDialog(wxString const&, int, wxString const&, wxString const&, wxString const&, wxAppTraits*) [clone .constprop.70] () at /lib64/libwx_baseu-3.0.so.0
#3 0x00007ffff62fdfc0 in wxAppConsoleBase::OnAssertFailure(wchar_t const*, int, wchar_t const*, wchar_t const*, wchar_t const*) () at /lib64/libwx_baseu-3.0.so.0
#4 0x00007ffff6bf9350 in wxApp::OnAssertFailure(wchar_t const*, int, wchar_t const*, wchar_t const*, wchar_t const*) () at /lib64/libwx_gtk2u_core-3.0.so.0
#5 0x00007ffff62fda3b in wxDefaultAssertHandler(wxString const&, int, wxString const&, wxString const&, wxString const&) () at /lib64/libwx_baseu-3.0.so.0
#6 0x00007ffff62fb8e1 in wxOnAssert(char const*, int, char const*, char const*, wchar_t const*) ()
    at /lib64/libwx_baseu-3.0.so.0
#7 0x00007ffff7bd5b9f in wxGLContext::SetCurrent(wxGLCanvas const&) const ()
    at /lib64/libwx_gtk2u_gl-3.0.so.0
#8 0x00007fffdea7c017 in KIGFX::OPENGL_GAL::BeginDrawing() (this=0x88a000)
    at /home/jon/dev/kicad-source-mirror/common/gal/opengl/opengl_gal.cpp:129
#9 0x00007fffdea5fc37 in EDA_DRAW_PANEL_GAL::onPaint(wxPaintEvent&) (this=0x888400)
    at /home/jon/dev/kicad-source-mirror/common/draw_panel_gal.cpp:130
#10 0x00007ffff62f7b6e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () at /lib64/libwx_baseu-3.0.so.0
#11 0x00007ffff648f4a8 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#12 0x00007ffff648f89e in wxEvtHandler::SearchDynamicEventTable(wxEvent&) ()
    at /lib64/libwx_baseu-3.0.so.0
#13 0x00007ffff648f92e in wxEvtHandler::TryHereOnly(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#14 0x00007ffff648f9f3 in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#15 0x00007ffff648fa55 in wxEvtHandler::ProcessEvent(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#16 0x00007ffff64904ca in wxEvtHandler::ProcessPendingEvents() () at /lib64/libwx_baseu-3.0.so.0
#17 0x00007ffff62fabc7 in wxAppConsoleBase::ProcessPendingEvents() () at /lib64/libwx_baseu-3.0.so.0
#18 0x00007ffff6bf4b32 in wxApp::DoIdle() () at /lib64/libwx_gtk2u_core-3.0.so.0
#19 0x00007ffff6bf4c23 in wxapp_idle_callback () at /lib64/libwx_gtk2u_core-3.0.so.0
#20 0x00007ffff1de6a8a in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#21 0x00007ffff1de6e20 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#22 0x00007ffff1de7142 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#23 0x00007ffff317af37 in gtk_main () at /lib64/libgtk-x11-2.0.so.0
#24 0x00007ffff6c16485 in wxGUIEventLoop::DoRun() () at /lib64/libwx_gtk2u_core-3.0.so.0
#25 0x00007ffff633cb13 in wxEventLoopBase::Run() () at /lib64/libwx_baseu-3.0.so.0
#26 0x0000...

Read more...

Revision history for this message
Chris Goddard (chriy) wrote :

Have now tested the Ubuntu build with the fix in it and it also does not crash for me any more.

Revision history for this message
Jon Neal (reportingsjr) wrote :

Switching from fix committed to confirmed.

I still get crashes when canvas_type is anything other than 0. Info same as above, except I am now on BZR 6091.

Changed in kicad:
status: Fix Committed → Confirmed
Revision history for this message
Maciej Suminski (orsonmmz) wrote :

Hi Jon,

Do you get an assert message in a dialog or pcbnew just dies with the backtrace you provided?

Regards,
Orson

Revision history for this message
Jon Neal (reportingsjr) wrote :
Download full text (4.5 KiB)

Derp, sorry if I'm a bit slow some times. Two different things going on here...

I get a assert message in a dialog before the above backtrace:
ASSERT INFO:
./src/unix/glx11.cpp(86): assert "xid" failed in SetCurrent(): window must be shown

BACKTRACE:
[1] wxGLContext::SetCurrent(wxGLCanvas const&) const
[2] wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const
[3] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[4] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
[5] wxEvtHandler::TryHereOnly(wxEvent&)
[6] wxEvtHandler::ProcessEventLocally(wxEvent&)
[7] wxEvtHandler::ProcessEvent(wxEvent&)
[8] wxEvtHandler::ProcessPendingEvents()
[9] wxAppConsoleBase::ProcessPendingEvents()
[10] wxApp::DoIdle()
[11] g_main_context_dispatch
[12] g_main_loop_run
[13] gtk_main
[14] wxGUIEventLoop::DoRun()
[15] wxEventLoopBase::Run()
[16] wxAppConsoleBase::MainLoop()
[17] APP_SINGLE_TOP::OnRun() /home/jon/dev/kicad-source-mirror/common/single_top.cpp:159
[18] wxEntry(int&, wchar_t**)
[19] main /home/jon/dev/kicad-source-mirror/common/single_top.cpp:196
[20] __libc_start_main
[21] _start

However, I then get a SIGTRAP with the following backtrace:
#0 0x00007ffff1dedd3b in g_logv () at /lib64/libglib-2.0.so.0
#1 0x00007ffff1dedeaf in g_log () at /lib64/libglib-2.0.so.0
#2 0x00007ffff2ddc9d0 in gdk_x_error () at /lib64/libgdk-x11-2.0.so.0
#3 0x00007ffff28263fd in _XError () at /lib64/libX11.so.6
#4 0x00007ffff2823287 in handle_error () at /lib64/libX11.so.6
#5 0x00007ffff2824408 in _XReply () at /lib64/libX11.so.6
#6 0x00007ffff258d2fa in DRI2GetBuffersWithFormat () at /lib64/libGL.so.1
#7 0x00007ffff258d637 in dri2GetBuffersWithFormat () at /lib64/libGL.so.1
#8 0x00007fffdb916f8b in intel_update_renderbuffers () at /usr/lib64/dri/i965_dri.so
#9 0x00007fffdb9174a1 in intel_prepare_render () at /usr/lib64/dri/i965_dri.so
#10 0x00007fffdb90b1c0 in brw_clear () at /usr/lib64/dri/i965_dri.so
#11 0x00007fffdea8b766 in KIGFX::OPENGL_COMPOSITOR::ClearBuffer() (this=0x88aac0)
    at /home/jon/dev/kicad-source-mirror/common/gal/opengl/opengl_compositor.cpp:220
#12 0x00007fffdea8b406 in KIGFX::OPENGL_COMPOSITOR::CreateBuffer() (this=0x88aac0)
    at /home/jon/dev/kicad-source-mirror/common/gal/opengl/opengl_compositor.cpp:177
#13 0x00007fffdea7bf23 in KIGFX::OPENGL_GAL::BeginDrawing() (this=0x88a2c0)
    at /home/jon/dev/kicad-source-mirror/common/gal/opengl/opengl_gal.cpp:151
#14 0x00007fffdea5f9ed in EDA_DRAW_PANEL_GAL::onPaint(wxPaintEvent&) (this=0x888800)
    at /home/jon/dev/kicad-source-mirror/common/draw_panel_gal.cpp:130
#15 0x00007ffff62f7b6e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () at /lib64/libwx_baseu-3.0.so.0
#16 0x00007ffff648f4a8 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#17 0x00007ffff648f89e in wxEvtHandler::SearchDynamicEventTable(wxEvent&) ()
    at /lib64/libwx_baseu-3.0.so.0
#18 0x00007ffff648f92e in wxEvtHandler::TryHereOnly(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#19 0x00007ffff648f9f3 in wxEvtHandler::ProcessEventLocally(wxEvent&)...

Read more...

Revision history for this message
Maciej Suminski (orsonmmz) wrote :

Jon,

Can you try out the attached patch? If it works for you, can you uncomment the 'ClearBuffer()' line in opengl_compositor.cpp and try again?

Thank you in advance,
Orson

Revision history for this message
Jon Neal (reportingsjr) wrote :
Download full text (3.2 KiB)

Hi Orson,

I applied the patch to the most recent code and tested, but I still get a SIGTRAP. However, the backtrace has changed a little bit.

Here is the new backtrace:
#0 0x00007ffff1dedd3b in g_logv () at /lib64/libglib-2.0.so.0
#1 0x00007ffff1dedeaf in g_log () at /lib64/libglib-2.0.so.0
#2 0x00007ffff2ddc9d0 in gdk_x_error () at /lib64/libgdk-x11-2.0.so.0
#3 0x00007ffff28263fd in _XError () at /lib64/libX11.so.6
#4 0x00007ffff2823287 in handle_error () at /lib64/libX11.so.6
#5 0x00007ffff2824408 in _XReply () at /lib64/libX11.so.6
#6 0x00007ffff258d2fa in DRI2GetBuffersWithFormat () at /lib64/libGL.so.1
#7 0x00007ffff258d637 in dri2GetBuffersWithFormat () at /lib64/libGL.so.1
#8 0x00007fffdb916f8b in intel_update_renderbuffers () at /usr/lib64/dri/i965_dri.so
#9 0x00007fffdb9174a1 in intel_prepare_render () at /usr/lib64/dri/i965_dri.so
#10 0x00007fffdb90b1c0 in brw_clear () at /usr/lib64/dri/i965_dri.so
#11 0x00007fffdea7e402 in KIGFX::OPENGL_GAL::ClearScreen(KIGFX::COLOR4D const&) (this=
    0x88a190, aColor=...) at /home/jon/dev/kicad-source-mirror/common/gal/opengl/opengl_gal.cpp:579
#12 0x00007fffdea5fb7b in EDA_DRAW_PANEL_GAL::onPaint(wxPaintEvent&) (this=0x888600)
    at /home/jon/dev/kicad-source-mirror/common/draw_panel_gal.cpp:131
#13 0x00007ffff62f7b6e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () at /lib64/libwx_baseu-3.0.so.0
#14 0x00007ffff648f4a8 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#15 0x00007ffff648f89e in wxEvtHandler::SearchDynamicEventTable(wxEvent&) ()
    at /lib64/libwx_baseu-3.0.so.0
#16 0x00007ffff648f92e in wxEvtHandler::TryHereOnly(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#17 0x00007ffff648f9f3 in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#18 0x00007ffff648fa55 in wxEvtHandler::ProcessEvent(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#19 0x00007ffff64904ca in wxEvtHandler::ProcessPendingEvents() () at /lib64/libwx_baseu-3.0.so.0
#20 0x00007ffff62fabc7 in wxAppConsoleBase::ProcessPendingEvents() () at /lib64/libwx_baseu-3.0.so.0
#21 0x00007ffff6bf4b32 in wxApp::DoIdle() () at /lib64/libwx_gtk2u_core-3.0.so.0
#22 0x00007ffff6bf4c23 in wxapp_idle_callback () at /lib64/libwx_gtk2u_core-3.0.so.0
#23 0x00007ffff1de6a8a in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#24 0x00007ffff1de6e20 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#25 0x00007ffff1de7142 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#26 0x00007ffff317af37 in gtk_main () at /lib64/libgtk-x11-2.0.so.0
#27 0x00007ffff6c16485 in wxGUIEventLoop::DoRun() () at /lib64/libwx_gtk2u_core-3.0.so.0
#28 0x00007ffff633cb13 in wxEventLoopBase::Run() () at /lib64/libwx_baseu-3.0.so.0
#29 0x00007ffff62fbd86 in wxAppConsoleBase::MainLoop() () at /lib64/libwx_baseu-3.0.so.0
#30 0x000000000041f537 in APP_SINGLE_TOP::OnRun() (this=0x6f1200)
    at /home/jon/dev/kicad-source-mirror/common/single_top.cpp:159
#31 0x00007ffff63923b0 in wxEntry(int&, wchar_t**) () at /lib64/libwx_baseu-3.0.so.0
#32 0x000000000041bc48 in main(int, char**) (argc=1, argv=0x7fffffffdf2...

Read more...

Revision history for this message
Maciej Suminski (orsonmmz) wrote :

Hi Jon,

Would you test another patch? There is a chance it will solve the problem, but if not - it should revert to the legacy canvas instead of crashing. I guess it should be good enough for the stable release.

Regards,
Orson

Revision history for this message
Maciej Suminski (orsonmmz) wrote :

Patch updated.

Revision history for this message
Jon Neal (reportingsjr) wrote :

No luck.

Backtrace:
#0 0x00007ffff1dedd3b in g_logv () at /lib64/libglib-2.0.so.0
#1 0x00007ffff1dedeaf in g_log () at /lib64/libglib-2.0.so.0
#2 0x00007ffff2ddc9d0 in gdk_x_error () at /lib64/libgdk-x11-2.0.so.0
#3 0x00007ffff28263fd in _XError () at /lib64/libX11.so.6
#4 0x00007ffff2823287 in handle_error () at /lib64/libX11.so.6
#5 0x00007ffff2824408 in _XReply () at /lib64/libX11.so.6
#6 0x00007ffff258d2fa in DRI2GetBuffersWithFormat () at /lib64/libGL.so.1
#7 0x00007ffff258d637 in dri2GetBuffersWithFormat () at /lib64/libGL.so.1
#8 0x00007fffdb4fb67b in intel_update_renderbuffers () at /usr/lib64/dri/i965_dri.so
#9 0x00007fffdb4fbb91 in intel_prepare_render () at /usr/lib64/dri/i965_dri.so
#10 0x00007fffdb4ef870 in brw_clear () at /usr/lib64/dri/i965_dri.so
#11 0x00007fffdea7ba12 in KIGFX::OPENGL_GAL::ClearScreen(KIGFX::COLOR4D const&) (this=
    0x2102ef0, aColor=...) at /home/jon/dev/kicad-source-mirror/common/gal/opengl/opengl_gal.cpp:582
#12 0x00007fffdea5cea7 in EDA_DRAW_PANEL_GAL::onPaint(wxPaintEvent&) (this=0x88b400)
    at /home/jon/dev/kicad-source-mirror/common/draw_panel_gal.cpp:131
#13 0x00007ffff62f7b6e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () at /lib64/libwx_baseu-3.0.so.0
#14 0x00007ffff648f4a8 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#15 0x00007ffff648f89e in wxEvtHandler::SearchDynamicEventTable(wxEvent&) ()
    at /lib64/libwx_baseu-3.0.so.0
#16 0x00007ffff648f92e in wxEvtHandler::TryHereOnly(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#17 0x00007ffff648f9f3 in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#18 0x00007ffff648fa55 in wxEvtHandler::ProcessEvent(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#19 0x00007ffff64904ca in wxEvtHandler::ProcessPendingEvents() () at /lib64/libwx_baseu-3.0.so.0
#20 0x00007ffff62fabc7 in wxAppConsoleBase::ProcessPendingEvents() () at /lib64/libwx_baseu-3.0.so.0
#21 0x00007ffff6bf4b32 in wxApp::DoIdle() () at /lib64/libwx_gtk2u_core-3.0.so.0
#22 0x00007ffff6bf4c23 in wxapp_idle_callback () at /lib64/libwx_gtk2u_core-3.0.so.0
#23 0x00007ffff1de6a8a in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#24 0x00007ffff1de6e20 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#25 0x00007ffff1de7142 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#26 0x00007ffff317af37 in gtk_main () at /lib64/libgtk-x11-2.0.so.0
#27 0x00007ffff6c16485 in wxGUIEventLoop::DoRun() () at /lib64/libwx_gtk2u_core-3.0.so.0
#28 0x00007ffff633cb13 in wxEventLoopBase::Run() () at /lib64/libwx_baseu-3.0.so.0
#29 0x00007ffff62fbd86 in wxAppConsoleBase::MainLoop() () at /lib64/libwx_baseu-3.0.so.0
#30 0x000000000041f537 in APP_SINGLE_TOP::OnRun() (this=0x6f1200)
    at /home/jon/dev/kicad-source-mirror/common/single_top.cpp:159
#31 0x00007ffff63923b0 in wxEntry(int&, wchar_t**) () at /lib64/libwx_baseu-3.0.so.0
#32 0x000000000041bc48 in main(int, char**) (argc=1, argv=0x7fffffffdf28)
    at /home/jon/dev/kicad-source-mirror/common/single_top.cpp:196

Revision history for this message
Maciej Suminski (orsonmmz) wrote :

One last shot, if it does not work then I will simply revert the change until I manage to obtain hardware that will allow to investigate the problem further. It is a complete patch, it does not require any of the previous ones.

Revision history for this message
Jon Neal (reportingsjr) wrote :

Woohoo! That did it!

Now let a few other people test it to make sure everything is good?

Jon

Revision history for this message
Maciej Suminski (orsonmmz) wrote :

Whew.. I have tested it with 3 other systems, including Windows and so far it looked fine. Committed in 6110, but if there are more problems resulting from saving the canvas type, then it really has to wait for the post-stable period.

Changed in kicad:
status: Confirmed → Fix Committed
Jon Neal (reportingsjr)
Changed in kicad:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.