Bug #53251 mysql_library_init fails on second execution with embedded library
| Submitted: | 28 Apr 2010 13:11 | Modified: | 20 Oct 2010 2:16 |
|---|---|---|---|
| Reporter: | Harrison Fisk | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Embedded Library ( libmysqld ) | Severity: | S2 (Serious) |
| Version: | 5.5.4 | OS: | Linux (x86_64) |
| Assigned to: | Alexey Botchkov | CPU Architecture: | Any |
| Tags: | embedded, mysql_library_init, regression | ||
[28 Apr 2010 13:11]
Harrison Fisk
test case
Attachment: main.cpp (text/plain), 1.75 KiB.
[28 Apr 2010 13:12]
Harrison Fisk
Makefile for test case, run 'make', or 'make 50',
Attachment: Makefile (application/octet-stream, text), 815 bytes.
[1 Jul 2010 13:45]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/112671 3258 Alexey Botchkov 2010-06-30 Bug#53251 mysql_library_init fails on second execution with embedded library we need to clear error messages when closing server. per-file comments: libmysqld/embedded_priv.h Bug#53251 mysql_library_init fails on second execution with embedded library libmysqld/lib_sql.cc Bug#53251 mysql_library_init fails on second execution with embedded library
[7 Jul 2010 14:36]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/113037 3288 Alexey Botchkov 2010-07-06 Bug#53251 mysql_library_init fails on second execution with embedded library thread-specific variables weren't set when we load error message files. per-file comments: libmysqld/lib_sql.cc Bug#53251 mysql_library_init fails on second execution with embedded library we need to call my_thread_init() once more. Normally it's called at the my_init() stage but that doesn't happen on the second my_init() call. sql/derror.cc Bug#53251 mysql_library_init fails on second execution with embedded library use default errors for the embedded server.
[8 Jul 2010 14:12]
Alexey Botchkov
Don't mind the first patch please. Was rather an experimental one.
[30 Aug 2010 17:20]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/117153 3195 Alexey Botchkov 2010-08-30 Bug#53251 mysql_library_init fails on second execution with embedded library thread-specific variables weren't set when we load error message files. per-file comments: libmysqld/lib_sql.cc Bug#53251 mysql_library_init fails on second execution with embedded library we need to call my_thread_init() once more. Normally it's called at the my_init() stage but that doesn't happen on the second my_init() call. sql/derror.cc Bug#53251 mysql_library_init fails on second execution with embedded library use default errors for the embedded server. sql/mysqld.cc Bug#53251 mysql_library_init fails on second execution with embedded library unregister server errors in clean_up(). Without it the error list contains that on the second mysql_server_init() which is not good.
[2 Sep 2010 19:43]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/117451 3202 Alexey Botchkov 2010-09-02 Bug#53251 mysql_library_init fails on second execution with embedded library thread-specific variables weren't set when we load error message files. per-file comments: libmysqld/lib_sql.cc Bug#53251 mysql_library_init fails on second execution with embedded library we need to call my_thread_init() once more. Normally it's called at the my_init() stage but that doesn't happen on the second my_init() call. sql/derror.cc Bug#53251 mysql_library_init fails on second execution with embedded library use default errors for the embedded server. sql/mysqld.cc Bug#53251 mysql_library_init fails on second execution with embedded library unregister server errors in clean_up(). Without it the error list contains that on the second mysql_server_init() which is not good. sql/set_var.cc Bug#53251 mysql_library_init fails on second execution with embedded library sys_var::cleanup() call instead of the destructor sql/set_var.h Bug#53251 mysql_library_init fails on second execution with embedded library sys_var::cleanup() introduced instead of the destructor sql/sys_vars.h Bug#53251 mysql_library_init fails on second execution with embedded library Sys_var_charptr::cleanup() implemented
[3 Sep 2010 10:06]
Alexander Barkov
Ok to push: http://bugs.mysql.com/bug.php?id=53251
[3 Sep 2010 10:39]
Alexander Barkov
Ok to push: http://lists.mysql.com/commits/117451
[9 Sep 2010 7:54]
Alexey Botchkov
mysql-5.5-bugfixing
[9 Sep 2010 12:37]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/117859 3206 Davi Arnaut 2010-09-09 Bug#53251: mysql_library_init fails on second execution with embedded library Add a virtual destructor. Class has virtual functions.
[2 Oct 2010 18:13]
Bugs System
Pushed into mysql-trunk 5.6.1-m4 (revid:alexander.nozdrin@oracle.com-20101002180948-852x1cuv7c6i85ea) (version source revid:alexander.nozdrin@oracle.com-20101002180857-an32jpuwzemsp4f2) (merge vers: 5.6.1-m4) (pib:21)
[2 Oct 2010 18:15]
Bugs System
Pushed into mysql-next-mr (revid:alexander.nozdrin@oracle.com-20101002181053-6iotvl26uurcoryp) (version source revid:alexander.nozdrin@oracle.com-20101002180917-h0n62akupm3z20nt) (pib:21)
[2 Oct 2010 18:16]
Bugs System
Pushed into mysql-5.5 5.5.7-rc (revid:alexander.nozdrin@oracle.com-20101002180831-590ka2tuit9qoxbb) (version source revid:alexander.nozdrin@oracle.com-20101002180831-590ka2tuit9qoxbb) (merge vers: 5.5.7-rc) (pib:21)
[20 Oct 2010 2:16]
Paul DuBois
Noted in 5.5.7, 5.6.1 changelogs. If an application using the embedded server called mysql_library_init() a second time after calling mysql_library_init() and mysql_library_end() to start and stop the server, the application crashed when reading option files.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.090 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: If you are using the embedded library and call mysql_library_init to launch the embedded server for the second time (after stopping it previously with mysql_library_end), then it will cause a segmentation fault while reading the configuration files. I will attach a test case to the issue, and it works fine with MySQL 5.1.90. The backtrace looks like: (gdb) bt #0 my_stat (path=0x7fff06294ee0 "/etc/mysql/my.cnf", stat_area=0x7fff062952f0, my_flags=0) at my_lib.c:548 #1 0x00000000005439b3 in search_default_file_with_ext (opt_handler=0x543750 <handle_default_option>, handler_ctx=0x7fff062954e0, dir=0x2fbee30 "/etc/mysql/", ext=0x94d2b5 ".cnf", config_file=0x948188 "my", recursion_level=0) at default.c:714 #2 0x000000000054474c in my_search_option_files (conf_file=0x948188 "my", argc=<value optimized out>, argv=<value optimized out>, args_used=0x7fff0629551c, func=0x543750 <handle_default_option>, func_ctx=0x7fff062954e0, default_directories=0x2fbedf0) at default.c:597 #3 0x0000000000544a3d in my_load_defaults (conf_file=0x948188 "my", groups=0x7fff06295648, argc=0x7fff0629556c, argv=0x7fff06295560, default_directories=0xf65b00) at default.c:506 #4 0x0000000000569a26 in init_embedded_server (argc=6, argv=0x7fff06295600, groups=0x7fff06295630) at lib_sql.cc:507 #5 0x0000000000502581 in main () How to repeat: Compile the test case against 5.5.4. Run the test case. See segfault. Compile the test case against 5.1. Run the test case. See it works fine. Suggested fix: Don't segfault.