Bug #69906 5.5.33 fails explain_filename unit test
Submitted: 2 Aug 2013 7:41 Modified: 2 Aug 2013 8:17
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: Tests Severity:S3 (Non-critical)
Version:5.5.33 OS:Linux (Ubuntu 13.04)
Assigned to: CPU Architecture:Any
Tags: unit

[2 Aug 2013 7:41] Laurynas Biveinis
Description:
A testsuite run shows unit test failure:
...
unit_tests                               w0 [ fail ]
...

Digging deeper, it is explain_filename that fails:

obj$ make test
Running tests...
Test project /home/laurynas/percona/src/5.5/obj
      Start  1: pfs_instr_class
 1/14 Test  #1: pfs_instr_class ..................   Passed    0.00 sec
      Start  2: pfs_instr_class-oom
 2/14 Test  #2: pfs_instr_class-oom ..............   Passed    0.00 sec
      Start  3: pfs_instr
 3/14 Test  #3: pfs_instr ........................   Passed    0.00 sec
      Start  4: pfs_instr-oom
 4/14 Test  #4: pfs_instr-oom ....................   Passed    0.00 sec
      Start  5: pfs
 5/14 Test  #5: pfs ..............................   Passed    0.60 sec
      Start  6: bitmap
 6/14 Test  #6: bitmap ...........................   Passed    4.35 sec
      Start  7: base64
 7/14 Test  #7: base64 ...........................   Passed    0.03 sec
      Start  8: my_vsnprintf
 8/14 Test  #8: my_vsnprintf .....................   Passed    0.00 sec
      Start  9: my_atomic
 9/14 Test  #9: my_atomic ........................   Passed    2.01 sec
      Start 10: my_rdtsc
10/14 Test #10: my_rdtsc .........................   Passed    0.12 sec
      Start 11: lf
11/14 Test #11: lf ...............................   Passed    2.25 sec
      Start 12: my_malloc
12/14 Test #12: my_malloc ........................   Passed    0.00 sec
      Start 13: explain_filename
13/14 Test #13: explain_filename .................***Failed    0.01 sec
      Start 14: my_decimal
14/14 Test #14: my_decimal .......................   Passed    0.00 sec

93% tests passed, 1 tests failed out of 14

Total Test time (real) =   9.42 sec

The following tests FAILED:
	 13 - explain_filename (Failed)
Errors while running CTest
make: *** [test] Error 8

$ cd unittest/mysys/
$ ./explain_filename-t 
1..22
Bail out! Signal 11 thrown
$ valgrind ./explain_filename-t 
==25825== Memcheck, a memory error detector
==25825== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==25825== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==25825== Command: ./explain_filename-t
==25825== 
1..22
==25825== Invalid read of size 4
==25825==    at 0xA3C869: _db_enter_ (dbug.c:1112)
==25825==    by 0x55DB75: explain_filename(THD*, char const*, char*, unsigned int, enum_explain_filename_mode) (sql_table.cc:214)
==25825==    by 0x43A897: test_1(char const*, char const*, enum_explain_filename_mode) (explain_filename-t.cc:53)
==25825==    by 0x43A976: main (explain_filename-t.cc:71)
==25825==  Address 0x35 is not stack'd, malloc'd or (recently) free'd
==25825== 
Bail out! Signal 11 thrown
==25825== 
==25825== HEAP SUMMARY:
==25825==     in use at exit: 32 bytes in 1 blocks
==25825==   total heap usage: 15 allocs, 14 frees, 14,592 bytes allocated
==25825== 
==25825== LEAK SUMMARY:
==25825==    definitely lost: 0 bytes in 0 blocks
==25825==    indirectly lost: 0 bytes in 0 blocks
==25825==      possibly lost: 0 bytes in 0 blocks
==25825==    still reachable: 32 bytes in 1 blocks
==25825==         suppressed: 0 bytes in 0 blocks
==25825== Rerun with --leak-check=full to see details of leaked memory
==25825== 
==25825== For counts of detected and suppressed errors, rerun with: -v
==25825== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

How to repeat:
cmake -DWITH_DEBUG=ON, make, explain_filename-t

Suggested fix:
Investigating.
[2 Aug 2013 8:17] Laurynas Biveinis
Not a bug, sorry. 

It was caused by libeatmydata preload initializing thread-specific data.