Invalid write/read of size 1/8 in do_lookup_x and _dl_name_match_p
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS |
Incomplete
|
High
|
Roel Van de Paar | ||
5.5 |
Incomplete
|
High
|
Roel Van de Paar |
Bug Description
==1078== Invalid write of size 1
==1078== at 0x3DA1009777: do_lookup_x (in /usr/lib64/
==1078== by 0x3DA100A072: _dl_lookup_symbol_x (in /usr/lib64/
==1078== by 0x3DA100E2D3: _dl_fixup (in /usr/lib64/
==1078== by 0x3DA10148E4: _dl_runtime_resolve (in /usr/lib64/
==1078== by 0x7B0BF9: my_pthread_
==1078== by 0x712B67: inline_
==1078== by 0x71CAC5: vprint_
==1078== by 0x71CBE0: Log_to_
==1078== by 0x713693: LOGGER:
==1078== by 0x715897: error_log_
==1078== by 0x7159D2: sql_print_
==1078== by 0x52E979: mysqld_
==1078== by 0x7A4D63: handle_options (my_getopt.c:738)
==1078== by 0x530529: init_common_
==1078== by 0x5346DC: mysqld_main(int, char**) (mysqld.cc:4600)
==1078== by 0x3DA1421734: (below main) (in /usr/lib64/
==1078== Address 0x7feffcef0 is on thread 1's stack
==1078==
==1078== Invalid write of size 8
==1078== at 0x3DA1009785: do_lookup_x (in /usr/lib64/
==1078== by 0x4: ???
==1078== by 0x4C21D9F: ???
==1078== by 0x107019F: ???
==1078== by 0x7FEFFD1DF: ???
==1078== Address 0x7feffcee8 is on thread 1's stack
==1078==
==1078== Invalid read of size 8
==1078== at 0x3DA100FF9A: _dl_name_match_p (in /usr/lib64/
==1078== Address 0x7feffcee8 is on thread 1's stack
==1078==
==1078== Invalid read of size 1
==1078== at 0x3DA100978C: do_lookup_x (in /usr/lib64/
==1078== by 0x3DA100A072: _dl_lookup_symbol_x (in /usr/lib64/
==1078== by 0x3DA100E2D3: _dl_fixup (in /usr/lib64/
==1078== by 0x3DA10148E4: _dl_runtime_resolve (in /usr/lib64/
==1078== by 0x7B0BF9: my_pthread_
==1078== by 0x712B67: inline_
==1078== by 0x71CAC5: vprint_
==1078== by 0x71CBE0: Log_to_
==1078== by 0x713693: LOGGER:
==1078== by 0x715897: error_log_
==1078== by 0x7159D2: sql_print_
==1078== by 0x52E979: mysqld_
==1078== by 0x7A4D63: handle_options (my_getopt.c:738)
==1078== by 0x530529: init_common_
==1078== by 0x5346DC: mysqld_main(int, char**) (mysqld.cc:4600)
==1078== by 0x3DA1421734: (below main) (in /usr/lib64/
==1078== Address 0x7feffcef0 is on thread 1's stack
==1078==
==1078== Invalid write of size 1
==1078== at 0x3DA1009DC6: do_lookup_x (in /usr/lib64/
==1078== by 0x3DA100A072: _dl_lookup_symbol_x (in /usr/lib64/
==1078== by 0x3DA100E2D3: _dl_fixup (in /usr/lib64/
==1078== by 0x3DA10148E4: _dl_runtime_resolve (in /usr/lib64/
==1078== by 0x7B0BF9: my_pthread_
==1078== by 0x712B67: inline_
==1078== by 0x71CAC5: vprint_
==1078== by 0x71CBE0: Log_to_
==1078== by 0x713693: LOGGER:
==1078== by 0x715897: error_log_
==1078== by 0x7159D2: sql_print_
==1078== by 0x52E979: mysqld_
==1078== by 0x7A4D63: handle_options (my_getopt.c:738)
==1078== by 0x530529: init_common_
==1078== by 0x5346DC: mysqld_main(int, char**) (mysqld.cc:4600)
==1078== by 0x3DA1421734: (below main) (in /usr/lib64/
==1078== Address 0x7feffcef0 is on thread 1's stack
==1078==
==1078== Invalid read of size 1
==1078== at 0x3DA1009DFD: do_lookup_x (in /usr/lib64/
==1078== by 0x3DA100A072: _dl_lookup_symbol_x (in /usr/lib64/
==1078== by 0x3DA100E2D3: _dl_fixup (in /usr/lib64/
==1078== by 0x3DA10148E4: _dl_runtime_resolve (in /usr/lib64/
==1078== by 0x7B0BF9: my_pthread_
==1078== by 0x712B67: inline_
==1078== by 0x71CAC5: vprint_
==1078== by 0x71CBE0: Log_to_
==1078== by 0x713693: LOGGER:
==1078== by 0x715897: error_log_
==1078== by 0x7159D2: sql_print_
==1078== by 0x52E979: mysqld_
==1078== by 0x7A4D63: handle_options (my_getopt.c:738)
==1078== by 0x530529: init_common_
==1078== by 0x5346DC: mysqld_main(int, char**) (mysqld.cc:4600)
==1078== by 0x3DA1421734: (below main) (in /usr/lib64/
==1078== Address 0x7feffcef0 is on thread 1's stack
Testcase is easy:
$ cat start_mtr98 Server- 5.5.28- rel29.3- 415.Linux. x86_64/ mysql-test/ mysql-test- run.pl --start-and-exit --valgrind --mysqld= --relay- log=slave- relay-bin --mysqld= --abort- slave-event- count=10 --mysqld= --log-queries- not-using- indexes --mysqld= --secure- file-priv= --mysqld= --max-allowed- packet= 16Mb --mysqld= --loose- innodb- status- file=1 --mysqld= --master- retry-count= 65535 --mysqld= --loose- debug-assert- if-crashed- table --mysqld= --loose- debug-assert- on-error --mysqld= --skip- name-resolve --vardir= /ssd/775838/ vardir1_ 98 --master_ port=17001- -mysqld= "--log- output= none" --mysqld= "--sql_ mode=ONLY_ FULL_GROUP_ BY" --mysqld= "--innodb- max-bitmap- file-size= 4095" --mysqld= "--innodb- changed- pages-limit= -1" 1st 2>&1 Server- 5.5.28- rel29.3- 415.Linux. x86_64/ bin/mysqladmin -uroot -S/ssd/ 775838/ vardir1_ 98/tmp/ master. sock shutdown mtr98;. /stop_mtr98 vardir1_ 98/log/ master. err # And see Valgrind error
cd /ssd/Percona-
perl lib/v1/
$ cat stop_mtr98
/ssd/Percona-
$ ./start_
$ vi /ssd/775838/
This seems to have something to do with the length of the startup command & option parsing. For example, though the server does not start with the following command, it/this also produces the same Valgrind warning :
$ cat start_mtr98.safe.2 Server- 5.5.28- rel29.3- 415.Linux. x86_64/ mysql-test/ mysql-test- run.pl --start-and-exit --valgrind --mysqld= --relay- log=slave- relay-bin --mysqld= --aaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaa --mysqld= --secure- file-priv= --mysqld= --max-allowed- packet= 16Mb --mysqld= --loose- innodb- status- file=1 --mysqld= --master- retry-count= --loose- debug-assert- if-crashed- table --mysqld= --loose- debug-assert- on-error --mysqld= --skip- name-resolve --vardir= /ssd/775838/ vardir1_ 98 --master_port=17001 --mysqld= "--log- output= none" --mysqld= "--sql_ mode=ONLY_ FULL_GROUP_ BY" --mysqld= "--innodb- max-bitmap- file-size= 4095" --mysqld= "--innodb- changed- pages-limit= -1" 1st 2>&1
cd /ssd/Percona-
perl lib/v1/
65535 --mysqld=
However, when reducing the length of 'aaaaa..aaaaa' the Valgrind error disappears.