Reporting Bugs
To report a bug in Balsa, please check the GNOME bug tracker first to see if your bug has already been reported. Do not create a new report for a registered bug, instead add a comment to the existing report to confirm the bug.
Please, provide detailed information, particularly when filing a new bug report. Most often, we need to know:
Your bug report can be submitted via the bug-buddy, which automates the process of generating stack traces described below. In general, you will have to fill in some blanks, and write some text about the bug. Whatever data you can get your hands on, paste into there.
If you're feeling adventurous, you can try using gdb to get a stack trace. The only thing better than a reproducible bug is a stack trace. We have some quick instructions for you to follow if you're not familiar with using gdb. First, you use gdb to run Balsa. We give it the option --disable-crash-dialog so that the program stops where the crash occurred, instead of going on into Gnome's crash handler:
$ gdb /path/to/balsa
GNU gdb 4.18 Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
(gdb) run --disable-crash-dialog
At this point Balsa should run. Do whatever you need to do to make it crash. Have no mercy. You'll get something like the following. The first order of business is to get a backtrace, with the "bt" command.
Program received signal SIGSEGV, Segmentation fault.
0x4008b9ab in poptGetInvocationName (con=0x80bb070) at popt.c:748
748 return con->os->argv[0];
(gdb) bt
#0 0x4008b9ab in poptGetInvocationName (con=0x80bb070) at popt.c:748
#1 0x4010ba63 in gnome_add_gtk_arg_callback (con=0x80bb070, reason=POPT_CALLBACK_REASON_PRE, opt=0x0, arg=0x0, data=0x0)
at gnome-init.c:113
#2 0x4008a171 in invokeCallbacks (con=0x80bb070, table=0x401658e8, post=0) at popt.c:39
#3 0x4008a13c in invokeCallbacks (con=0x80bb070, table=0x80b07b8, post=0) at popt.c:34
#4 0x4008a2ef in poptGetContext (name=0x809e3b5 "balsa", argc=2, argv=0x0, options=0x80b07b8, flags=0) at popt.c:78
#5 0x403f0ba6 in gnomelib_parse_args (argc=2, argv=0x0, popt_flags=0) at gnome-popt.c:80
#6 0x4010bdef in gnome_init_with_popt_table (app_id=0x809e3b5 "balsa", app_version=0x809e3af "0.7.9", argc=2, argv=0x0,
options=0x80a75b8, flags=0, return_ctx=0x0) at gnome-init.c:451
#7 0x4002d36f in gnome_CORBA_init_with_popt_table (app_id=0x809e3b5 "balsa", app_version=0x809e3af "0.7.9", argc=0xbffffc48, argv=0x0,
options=0x80a75b8, popt_flags=0, return_ctx=0x0, gnorba_flags=GNORBA_INIT_SERVER_FUNC, ev=0xbffffc30) at orbitgnome.c:98
#8 0x806a3ad in balsa_init (argc=2, argv=0x0) at main.c:111
#9 0x806a5f8 in main (argc=2, argv=0xbffffcb4) at main.c:234
Save this output. This is the all-important stacktrace. There's a little more information to be gleaned though. Try repeating these commands three or four times:
(gdb) list
743
744 return 0;
745 }
746
747 const char * poptGetInvocationName(poptContext con) {
748 return con->os->argv[0];
749 }
750
751 int poptStrippedArgv(poptContext con, int argc, char **argv)
752 {
(gdb) info locals
con = 0x0
(gdb) up
#1 0x4010ba63 in gnome_add_gtk_arg_callback (con=0x80bb070, reason=POPT_CALLBACK_REASON_PRE, opt=0x0, arg=0x0, data=0x0)
at gnome-init.c:113
113 g_ptr_array_add(gtk_args,
(gdb) list
108 gtk_args = g_ptr_array_new();
109
110 /* Note that the value of argv[0] passed to main() may be
111 * different from the value that this passes to gtk
112 */
113 g_ptr_array_add(gtk_args,
114 (char *)poptGetInvocationName(con));
115 break;
116
117 case POPT_CALLBACK_REASON_OPTION:
(gdb) info locals
file_name = (gchar *) 0x40165904 ""
reason = POPT_CALLBACK_REASON_PRE
opt = (struct poptOption *) 0x80bb2a0
gnome_gtk_initialized = 0
gtk_args = (GPtrArray *) 0x80bb2b8
newstr = 0x40165904 ""
final_argc = 1074307343
final_argv = (char **) 0x4008e0e8
(gdb) up
#2 0x4008a171 in invokeCallbacks (con=0x80bb070, table=0x401658e8, post=0) at popt.c:39
39 cb(con, post ? POPT_CALLBACK_REASON_POST : POPT_CALLBACK_REASON_PRE,
(gdb)
Et cetera. These commands might be pointless or you might not be able to even execute them, but if you can, send us this output as well. We will forever be in your debt.
Copyright (C) 1997-2001 Stuart Parmenter and others