Bug #96826 | DBUG_PRINTs are lost | ||
---|---|---|---|
Submitted: | 10 Sep 2019 16:02 | Modified: | 15 Nov 2019 12:26 |
Reporter: | Tony Reix | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server | Severity: | S6 (Debug Builds) |
Version: | 8.0.16 | OS: | Fedora (fc30) |
Assigned to: | CPU Architecture: | POWER (PPC64LE) |
[10 Sep 2019 16:02]
Tony Reix
[10 Sep 2019 16:04]
Tony Reix
Debug-patched sql_table.cc file
Attachment: sql_table.cc (text/x-c++src), 693.10 KiB.
[11 Sep 2019 10:12]
Tor Didriksen
did you try to turn on flush-on-write for the dbug system?
[11 Sep 2019 10:35]
Tony Reix
No. I had no idea such feature does exist. However, looking for this feature, I was unable to find any hints about it on the Web, in the code, or in all source code. Would you mind providing some help/explanation about how I can put this flush-on-write at work? Thx
[11 Sep 2019 10:37]
Tor Didriksen
I don't use the DBUG system myself anymore, but I found some documentation here: https://dev.mysql.com/doc/refman/5.7/en/dbug-package.html
[11 Sep 2019 14:05]
Tony Reix
Thx. I used: ./mtr .... --debug --mysqltest=d:t:i:O,/tmp/mysqld.trace which generated : mysql-test/mysql-test-run.pl --warnings --verbose \ --debug --mysqltest=d:t:i:O,/tmp/mysqld.trace \ --parallel=1 --force --retry=0 --suite-timeout=2000 --testcase-timeout=60 --report-unstable-tests --max-save-core=100 --max-test-fail=0 --tmpdir=/My --user=root --mark-progress innodb.innodb-import-partition However, the test was run with: build/runtime_output_directory/mysqltest_safe_process --verbose -- /opt/freeware/src/packages/BUILD/mysql-8.0.16-1/build/runtime_output_directory/mysqld-debug --defaults-group-suffix=.1 --defaults-file=/opt/freeware/src/packages/BUILD/mysql-8.0.16-1/build/mysql-test/var/my.cnf --user=root --log-output=file --loose-debug-sync-timeout=600 --core-file --debug=d:t:i:A,/opt/freeware/src/packages/BUILD/mysql-8.0.16-1/build/mysql-test/var/log/mysqld.1.trace and thus the options I provided were not taken into account. Worse, I no more had my traces... If I use : ./mtr ... --debug --mysqld=d:t:i:O,/tmp/mysqld.trace (mysqld instead of mysqltest) the test breaks at launch. Hummm I may have done mistakes... Not really sure. Probably I missed something or these options no more work.
[11 Sep 2019 14:37]
Tor Didriksen
this seems to work for me: ./mtr --mem --mysqld=--debug=d:t:i:O,/tmp/mysqld.trace main.1st Logging: ...../mysql-test/mysql-test-run.pl --mem --mysqld=--debug=d:t:i:O,/tmp/mysqld.trace main.1st MySQL Version 8.0.19
[11 Sep 2019 15:14]
Tony Reix
Ooops ! My mistake. I wrote : ./mtr .... --debug --mysqltest=d:t:i:O,/tmp/mysqld.trace instead of: ./mtr .... --mysqld=--debug=d:t:i:O,/tmp/mysqld.trace However, now I have: Logging: /opt/freeware/src/packages/BUILD/mysql-8.0.16-1/mysql-test/mysql-test-run.pl --warnings --verbose --debug --mysqld=--debug=d:t:i:O,/tmp/mysqld.trace --parallel=1 --force --retry=0 --suite-timeout=2000 --testcase-timeout=60 --report-unstable-tests --max-save-core=100 --max-test-fail=0 --tmpdir=/My --user=root --mark-progress innodb.innodb-import-partition (in short : .../mysql-test/mysql-test-run.pl ... --debug --mysqld=--debug=d:t:i:O,/tmp/mysqld.trace ....) ... ### safe_path: .../build/runtime_output_directory/mysqltest_safe_process ..... --debug=d:t:i:A,/opt/freeware/src/packages/BUILD/mysql-8.0.16-1/build/mysql-test/var/log/bootstrap.trace ...... ... ### safe_path: .../build/runtime_output_directory/mysqltest_safe_process ..... --debug=d:t:i:A,/opt/freeware/src/packages/BUILD/mysql-8.0.16-1/build/mysql-test/var/log/mysqld.1.trace ...... ... ### safe_path: .../build/runtime_output_directory/mysqltest_safe_process ... --debug=d:t:i:O,/tmp/mysqld.trace .... --debug=d:t:i:A,/opt/freeware/src/packages/BUILD/mysql-8.0.16-1/build/mysql-test/var/log/mysqld.1.trace ... THUS : 2 times x --debug= option ! Last one is used I think. And thus: ll /tmp/mysqld.trace -rw-rw---- 1 root root 0 11 sept. 17:01 /tmp/mysqld.trace And in .../build/mysql-test/var/log/mysqld.1.trace I still miss many debug lines.
[12 Sep 2019 5:55]
Tor Didriksen
don't use --debug for mtr, in mysqld_start it will do: if ($opt_debug) { mtr_add_arg($args, "--debug=$debug_d:t:i:A,%s/log/%s.trace", $path_vardir_trace, $mysqld->name()); } thus overriding your --debug option
[13 Sep 2019 12:50]
Tony Reix
I have patched the file: mysql-test/mysql-test-run.pl so that I have now: --debug=$debug_d:t:i:O instead of: --debug=$debug_d:t:i:A I see that it does: ### safe_path: /opt/freeware/src/packages/BUILD/mysql-8.0.16-1/build/runtime_output_directory/mysqltest_safe_process --verbose .... \ --debug=d:t:i:O,/tmp/mysqld.trace --core-file \ --debug=d:t:i:O,/opt/freeware/src/packages/BUILD/mysql-8.0.16-1/build/mysql-test/var/log/mysqld.1.trace However, in mysqld.1.trace, I still see 208 times the line with trace "6a2" but only 26 times the line with trace "6a1", though there should be the exact same number. Lines of trace disappear (only on Fedora/PPC64LE. That's OK on AIX).
[14 Oct 2019 12:53]
MySQL Verification Team
Hi Mr. Reix, This is a forum for bugs in the unchanged MySQL products. If you can report any of our DBUG_PRINTs not working, we would be happy to help you. The problem may lie with the compiler that you are using. It is possible that it does not accept quoted arguments in the functions with variable arguments.
[15 Nov 2019 1:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".