Oracle has just released MySQL 8.0.38/8.4.1/9.0.0, so let's see how the Valgrind testing of the previous set of releases is going:
[ 65%] innodb.bug33788578_rec_IV_set w2 [ fail ] Found warnings/errors in error log file!
It only managed two thirds of a run (a --big-test
one) in a few
weeks, which means that I either need a faster machine, or that Valgrind testing does
not take even remotely reasonable amount of time. Despite the run being incomplete,
it resulted in couple of bug reports because every single test gives an error:
#115229: pwrite(buf) points to uninitialised byte(s) in
os_fusionio_get_sector_size(). I also noticed that one test always times out:
#114998: Test rpl_gtid.rpl_gtid_parallel times out under Valgrind. I need to rethink
Valgrind testing going forward, maybe by trying dropping --big-test
first.
Back to the new releases. A nice surprise is that the they build with XCode 15.3 even though the associated bug (#113123: Compilation fails with LLVM 17 and XCode 15.3) is still open. However, an LLVM 18 build fails in the bundled zlib, and this time I refrained from reporting a bug. GCC 11–14 also fail, but they are officially unsupported for macOS, so I won't be reporting that, unless I encounter issues on Linux.
Fixed and no longer reproducing bugs:
- #113123: Compilation fails with LLVM 17 and XCode 15.3
- #114894: Test rpl.rpl_log_info_repository_persistence_require_row failing
- #114896: Several tablespace encryption tests failing
- #113702: Test binlog.binlog_error_action fails under Sanitizer build
- #113704: Tests main.log_backtrace & main.log_backtrace_debug fail under Sanitizer build
New bugs:
- #115479: main.partition_innodb_tablespace not masking temp directory
- #115480: Test innodb.log_first_rec_group failing
- #115481: Test main.window_functions failing
- #115482: Test main.window_jsonaggs failing
- #115495: "Unable to read page" crash on innodb.dblwr_encrypt_recover
- #115497: Test main.alter_table-big_myisam failure
- #115498: Test main.opt_hints_hypergraph always failing
Little to no changes
- #113260: Client error in error log: MY-004031 - The client was disconnected …
- #113023: mysql-test/include/wait_for_pattern_in_file.inc incompatible with Homebrew Perl
- #113189: ColumnStatisticsTest.StoreAndRestoreAttributesEquiHeight unit test fails
- #113190: Several tests in routertest_integration_routing_sharing_constrained_pools fail
- #114888: Test innodb.parallel_read_kill always fails
- #113709: StrXfrmTest.ChineseUTF8MB4 failing with an AddressSanitizer error, which is a duplicate of #109540, fixed in 8.1.0 only.
- #113722: Test main.index_merge_innodb failing with a result difference
- #114892: Test XComControlTest.SuspectMemberFailedRemovalDueToMajorityLoss fails
- #113665: perfschema.relaylog fails with a result difference - reproduced only on 8.4.1. I guess the test is still flaky.
- #113703: Test innodb.ddl_kill fails under Sanitizer build - reproduced on 8.4.1 and 9.0.0 but not 8.0.38.
- #113710: Spec/HttpClientSecureTest.ensure/default_client_cipher_succeeds ASan error
Finally, I did not retest #113113: Build failure with Homebrew LLVM 14-17 on macOS, where I keep using the workaround of setting CMAKE_AR to Homebrew ar.
To sum up, 5 bugs fixed or no longer reproducing, 7 new, 11 with no changes, 1 not tested, and 2 new Valgrind ones. I don't like this trend and I miss the middle-8.0 releases that were fully clean under macOS.
2 comments:
Is there a particular reason why you use Valgrind instead of more efficient and comprehensive tools, such as the compile-time instrumentation -fsanitize=address -fsanitize=undefined (GCC and clang) and the clang -fsanitize=memory? For the latter, you may want to read MDEV-20377 how to avoid false alarms due to uninstrumented code.
I am using sanitizers all the time, sure, but I there are differences in the error classes caught between ASan and Valgrind, thus I want to be able to run the latter every now and then.
(I am not using MSan, as it's complex and I was never able to get it work properly. I see that MariaDB tries to make it simpler, thus I'll note to try it there, when I need to work on MariaDB).
I wish I could use TSan too, but maintainers on all projects have different ideas it seems.
Post a Comment