From: Luis Soares Date: October 11 2010 2:12pm Subject: bzr commit into mysql-5.5-bugteam branch (luis.soares:3232) List-Archive: http://lists.mysql.com/commits/120506 Message-Id: <201010111414.o9BBwkVB025505@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2552789127589934153==" --===============2552789127589934153== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/lsoares/Workspace/bzr/work/tests/mysql-5.5-bugteam/ based on revid:li-bing.song@stripped 3232 Luis Soares 2010-10-11 Fix for crash in mysqld --verbose --help while initializing option for --init-rpl-role. Problem: There are two variables involved in this issue, rpl_status and rpl_role_type. The former is an array containing the description of the possible values for the latter. rpl_status is declared as an enumeration and is stored in a 4 bytes integer. On the other hand, my_getopt, reads enum values into a ulong: *(ulong*)value= arg; In some cases, this can overwriting the memory for used for rpl_role_type, corrupting the first entry in the array. Fix: We fix this by re-declaring rpl_status as a ulong, so that it has space to accommodate the value "parsed" in my_getopt . modified: sql/repl_failsafe.cc sql/repl_failsafe.h === modified file 'sql/repl_failsafe.cc' --- a/sql/repl_failsafe.cc 2010-07-23 20:13:36 +0000 +++ b/sql/repl_failsafe.cc 2010-10-11 14:12:56 +0000 @@ -41,7 +41,7 @@ #define SLAVE_ERRMSG_SIZE (FN_REFLEN+64) -RPL_STATUS rpl_status=RPL_NULL; +ulong rpl_status=RPL_NULL; mysql_mutex_t LOCK_rpl_status; mysql_cond_t COND_rpl_status; HASH slave_list; @@ -56,6 +56,7 @@ const char* rpl_status_type[]= "RECOVERY_CAPTAIN","NULL",NullS }; + static Slave_log_event* find_slave_event(IO_CACHE* log, const char* log_file_name, char* errmsg); @@ -68,7 +69,7 @@ static Slave_log_event* find_slave_event functions like register_slave()) are working. */ -void change_rpl_status(RPL_STATUS from_status, RPL_STATUS to_status) +void change_rpl_status(ulong from_status, ulong to_status) { mysql_mutex_lock(&LOCK_rpl_status); if (rpl_status == from_status || rpl_status == RPL_ANY) === modified file 'sql/repl_failsafe.h' --- a/sql/repl_failsafe.h 2010-07-23 20:13:36 +0000 +++ b/sql/repl_failsafe.h 2010-10-11 14:12:56 +0000 @@ -26,7 +26,7 @@ typedef enum {RPL_AUTH_MASTER=0,RPL_IDLE RPL_LOST_SOLDIER,RPL_TROOP_SOLDIER, RPL_RECOVERY_CAPTAIN,RPL_NULL /* inactive */, RPL_ANY /* wild card used by change_rpl_status */ } RPL_STATUS; -extern RPL_STATUS rpl_status; +extern ulong rpl_status; extern mysql_mutex_t LOCK_rpl_status; extern mysql_cond_t COND_rpl_status; @@ -34,7 +34,7 @@ extern TYPELIB rpl_role_typelib; extern const char* rpl_role_type[], *rpl_status_type[]; pthread_handler_t handle_failsafe_rpl(void *arg); -void change_rpl_status(RPL_STATUS from_status, RPL_STATUS to_status); +void change_rpl_status(ulong from_status, ulong to_status); int find_recovery_captain(THD* thd, MYSQL* mysql); int update_slave_list(MYSQL* mysql, Master_info* mi); --===============2552789127589934153== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/luis.soares@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: luis.soares@stripped # target_branch: file:///home/lsoares/Workspace/bzr/work/tests/mysql-\ # 5.5-bugteam/ # testament_sha1: 6e2db768cd682f8ff591076736c382821f0efe40 # timestamp: 2010-10-11 15:13:03 +0100 # base_revision_id: li-bing.song@stripped\ # tnbvwjzbklnk5lww # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWa5aEEEAAkzfgAAQUHf//1Ml 3oC////wYAY7lfKelskaZAFEQ0c0xMACYAJgABMAATBJUp+lNtSfpoxKeKegmhp6gAAANARNT0np oSANGIAAAAAABKaISaDQNNCY1R6aTIyGh6QaeoNBzTEwAJgAmAAEwABMEkgjQNBMjRpDTTRMUyPS jACbKPqujEqEi1G4ufQPEFOo9IGPkjfOYohBSkNA6xGbUOWabplwVdNseWVn5vsenPP1HMxiSEgt +w05Yc+rTS2hOT81RTV1HwEn1a0uBkjcIdaeyHjSh3PTbdOdr1QFXotO4w2AawJexkaAYkL1g+IW gLlwIsCaZKaxRMaEIFkTrT+eGyuUTE8Gwql+lXy28css+i+821l77GhMepCbgejTZz9MC+b6FFXE zFC/tZAYr3cW+2tzvMr2CuPdidVLsQs2yZ3HDDEgjFMCzQaKohXE4lpFCs6n5BA2NA7DJmLAQNOC ATw2e0fqoVhDUxIPexYcSzVkrG3LpUKQMJHVy+nIw4WFKSoAhGvACqgtonZ0iQJQgFYDikzsfPyl 22qKywv32kZRGBYbRe9o7GybSgHEn4fY4aMMiYZQLwpGc4gbr1BEgJ/3yMZdxQcyq2rdAskWPKEw +kinqTikiaZE8TAxqUmsMKBZmQRldiXkHoT2N8VGmcuNGJCeBNNBFVo9XkjNZerDSqZGwYW3AqFc QrN5Jzg1sWgIyLHAJXwat2aMtgOai0CwzQIzMYPuHTPEDU1gpUY2Fls77gwN4FpyNCjK5nTfnsRc TtpuvIwnVIkYcbd/CgtKbCKx3Gp49vWunau62NUxyWlRUyzQymgVSk02KVLFu7/Lwbhb3IyHsN0C Cvt8S7ASYMjVGJJJL6P2wWdPxL95/zV8obzVfWN4mmJNLGJ8PIA9HzMxxArW1IuxA8/v6fWX0Pqk fOqoY+x5gZJUIgLKsoDcShYTk4vU3Y3pbhD7IfMeRYpqqze3kz5WpEyJaRPpV8ojYHzPwMoQ4kz1 Xws6vryxIa6JK3hEWKo6TUUDeqJ27rhuhQO+3URtaZHcByRISnlQundTIYKhmsK9KX8w5y8ZBiSB 1UUbXm8uNDjnlrW7oqCwg3EtkBrpt0obUb/Wcwd+1ESwWSh8LOzCZF5/uwzHDfKh49XxpQvxFnIt NMt6FjMLMj5lttVGyEa7n7oxHLrRo43LPx5mW05cNG9V/dzVrx5rNeTgYYUYXcdb3wlRwhfDlW0L aIIK+tZaQRSjWHXiHA8zd2N5zOpAiOA7uhUSqPxFzOkwKhOLV5eVZotj+TM8AwPHqPgyKmTQQHFl MTG/I8TA8NSJ3+q0HCucT7g+zIw9nP9HL5F5sSSgdl5ji/eOvdp5E96OI6nzWp6MHIUD9TUXNGV2 d9J2VV1RL+vDZ8JLNFd/hHEZmcg4IcYFHHM/ypuRYMWnNd5WtxWepsjgvufyu3QJom4HpK03Ueaq 8YpDz8Bh5A2THec9uiZBdIU6A/g9kxX0t91W5CrZeC1ND8SFq0olZefIDyLPEgVnuQnbUrC0c1Mh ojhzv9f9mqnYy3ibASOTVhUxNCEIQgTIHOMNsbeVE1TEcmZJgx0rG8meZED7wQfBXFr/Ucm8RJxQ 4sA98EEFCOYDWlVyPukPE4KNLoL9AO0JZtzHE2RKYszvHU82GDrQolJ5mXETIMCdedRZWQrvA7zK FZYBRshe47CALbozCJ5RUTNovEhxjN3UaCr3PhuwhmKTLzpryYTeLTFliSkOVmNXY40O5iQ5KaWs dtcmiJJwhDsEwHIYKchavIxq0qGmxcSsQ4sLWOxuvb6oHMtT2ZmfabGWV2L5pGCJYdE/3lwzoaD+ UYbx5+QNSC6kYekdR+Uw5MbMLNl7Fb56ZGL2i3Y4K+tcDcJ67hixgqrZIYp1N5TjUy6/u5B0+CrR hzFxJegDX8UiOBmM4zZMn7itwaXIrNuS1jzFO50yshUsE8eKadOZzepeVmBIsNQKCqr8lQSG+DQd d/8XckU4UJCuWhBB --===============2552789127589934153==--