Bug #22500 Specifying alternate my.cnf file in Startup Parameters causes segfault
Submitted: 19 Sep 2006 23:57 Modified: 17 Oct 2006 9:12
Reporter: David Shrewsbury Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Administrator Severity:S1 (Critical)
Version:1.2.3rc/1.2.4rc OS:Linux (Linux)
Assigned to: Vladimir Kolesnikov CPU Architecture:Any

[19 Sep 2006 23:57] David Shrewsbury
Description:
I use the config file /usr/local/mysql/etc/my.cnf for MySQL server options. MySQL Administrator expects /etc/my.cnf when entering the Starup Parameters section. If this file is not found, you are prompted for the location of the config file. Entering in the new location causes Administrator to crash. Permission on my.cnf allow for my user to edit the file.

OS: Ubuntu 6.06 (kernel 2.6.15-27-amd64-xeon)
MySQL Server: 5.0.24a (Linux (AMD64 / Intel EM64T) Max non-RPM package)
MySQL GUI Tools: mysql-gui-tools-5.0r3-linux-x86_64

Contents of /usr/local/mysql/etc/my.cnf:

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql_data
user=mysql
skip-innodb

How to repeat:
1) Start a MySQL server with a my.cnf file in some place other than /etc (e.g., /usr/local/mysql/etc/my.cnf). Make sure /etc/my.cnf does not exist.
2) Start MySQL Administrator and connect to the database via localhost as the root  user.
3) Select Startup Parameters section. When the Warning box comes up saying my.cnf cannot be found, select the Specify Location button.
4) Enter the full path to the location of the alternate my.cnf file.
5) Administrator will crash after the path is entered
[20 Sep 2006 12:52] David Shrewsbury
Also verified on another system:

OS: Gentoo Base System version 1.12.5 (kernel 2.6.16-gentoo-r9)
MySQL Server: mysql-max-5.0.24a-linux-i686-glibc23
MySQL GUI: mysql-gui-tools-5.0r3-linux-i386
[20 Sep 2006 13:32] MySQL Verification Team
Thank you for the bug report. Verified on Suse 10.

miguel@hegel:~/comp> mysql-administrator
Warning: The option skip-locking is not known. Please file a bug report if this is a valid option.
Warning: The option thread_cache is not known. Please file a bug report if this is a valid option.
Warning: The option log_slow_queries is not known. Please file a bug report if this is a valid option.
/usr/bin/mysql-administrator: line 103:  5960 Segmentation fault      $PRG-bin $args
[16 Oct 2006 8:50] Vladimir Kolesnikov
Hi David,

I cannot repro this bug. Possibly this is because I fixed the problem while working on other bugs. Can you provide stack trace so I can figure out where exactly it happens? 

How to make stack back trace:

shell> export MA_DIR=/usr/local
shell> gdb /usr/local/bin/mysql-administrator-bin
gdb> run

after this gdb can stop with this message: "cannot get thread info ...". in this case you need
gdb> continue

finally when the app will crash gdb will report this and you'll need to do
gdb> bt
and it will print out the backtrace I need.

Thanks,
Vlad
[16 Oct 2006 12:31] David Shrewsbury
I used MySQL Administrator 1.2.4rc on Ubuntu 6.06 to reproduce the
problem and generate the backtrace.

FYI, I had to modify your instructions this way to get your backtrace:
 1) export MA_DIR=/opt/mysql-gui-tools-5.0
 2) export LD_LIBRARY_PATH=/opt/mysql-gui-tools-5.0/lib
 3) gdb /opt/mysql-gui-tools-5.0/mysql-administrator-bin

Backtrace follows:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 46912560448640 (LWP 6464)]
0x000000000050abcf in MGOptions::free_options ()
(gdb) bt
#0  0x000000000050abcf in MGOptions::free_options ()
#1  0x000000000050b2ea in MGOptions::save ()
#2  0x000000000046e2d4 in MAStartupParametersPanel::show (
    this=<value optimized out>) at MAStartupParametersPanel.cc:347
#3  0x0000000000449762 in MAdministrator::switch_panel (this=0x7fffffb5f730,
    panel=0xbc1680) at MAdministrator.cc:501
#4  0x000000000044999f in MAdministrator::tree_selection_changed_cb (
    this=0x7fffffb5f730) at MAdministrator.cc:779
#5  0x00002aaaabf23282 in Glib::SignalProxyNormal::slot0_void_callback ()
   from /opt/mysql-gui-tools-5.0/lib/libglibmm-2.4.so.1
#6  0x00002aaaad4b8910 in g_closure_invoke ()
   from /opt/mysql-gui-tools-5.0/lib/libgobject-2.0.so.0
#7  0x00002aaaad4c7e8f in g_signal_stop_emission ()
   from /opt/mysql-gui-tools-5.0/lib/libgobject-2.0.so.0
#8  0x00002aaaad4c8fcc in g_signal_emit_valist ()
   from /opt/mysql-gui-tools-5.0/lib/libgobject-2.0.so.0
#9  0x00002aaaad4c9383 in g_signal_emit ()
   from /opt/mysql-gui-tools-5.0/lib/libgobject-2.0.so.0
#10 0x00002aaaabb8a3b1 in gtk_tree_view_scroll_to_cell ()
   from /opt/mysql-gui-tools-5.0/lib/libgtk-x11-2.0.so.0
#11 0x00002aaaabb92a75 in gtk_tree_view_set_model ()
   from /opt/mysql-gui-tools-5.0/lib/libgtk-x11-2.0.so.0
#12 0x00002aaaabac4910 in _gtk_marshal_BOOLEAN__BOXED ()
   from /opt/mysql-gui-tools-5.0/lib/libgtk-x11-2.0.so.0
#13 0x00002aaaad4b8910 in g_closure_invoke ()
   from /opt/mysql-gui-tools-5.0/lib/libgobject-2.0.so.0
#14 0x00002aaaad4c7c9d in g_signal_stop_emission ()
   from /opt/mysql-gui-tools-5.0/lib/libgobject-2.0.so.0
#15 0x00002aaaad4c8d0c in g_signal_emit_valist ()
   from /opt/mysql-gui-tools-5.0/lib/libgobject-2.0.so.0
#16 0x00002aaaad4c9383 in g_signal_emit ()
   from /opt/mysql-gui-tools-5.0/lib/libgobject-2.0.so.0
#17 0x00002aaaabba3625 in gtk_widget_activate ()
   from /opt/mysql-gui-tools-5.0/lib/libgtk-x11-2.0.so.0
#18 0x00002aaaabac2d1b in gtk_propagate_event ()
   from /opt/mysql-gui-tools-5.0/lib/libgtk-x11-2.0.so.0
#19 0x00002aaaabac3197 in gtk_main_do_event ()
   from /opt/mysql-gui-tools-5.0/lib/libgtk-x11-2.0.so.0
#20 0x00002aaaac1882ac in _gdk_events_queue ()
   from /opt/mysql-gui-tools-5.0/lib/libgdk-x11-2.0.so.0
#21 0x00002aaaad81bbfd in g_main_context_dispatch ()
   from /opt/mysql-gui-tools-5.0/lib/libglib-2.0.so.0
#22 0x00002aaaad81eec5 in g_main_context_check ()
   from /opt/mysql-gui-tools-5.0/lib/libglib-2.0.so.0
#23 0x00002aaaad81f18a in g_main_loop_run ()
   from /opt/mysql-gui-tools-5.0/lib/libglib-2.0.so.0
#24 0x00002aaaabac2582 in gtk_main ()
   from /opt/mysql-gui-tools-5.0/lib/libgtk-x11-2.0.so.0
#25 0x00000000004553db in main (argc=1, argv=0x7fffffb5fe08) at main.cc:497
[16 Oct 2006 18:00] MySQL Verification Team
Still happens on my side too.
[17 Oct 2006 9:12] Vladimir Kolesnikov
Thank you for your bug report. This issue has been committed to our source repository of that product and will be incorporated into the next release.

If necessary, you can access the source repository and build the latest available version, including the bug fix. More information about accessing the source trees is available at

    http://dev.mysql.com/doc/en/installing-source.html

Hi David,

Thanks for the info. It was fixed before indeed (a null-check was added).