LevelDB Storage Engine MS2 (MDEV-4201)

[MDEV-4320] LevelDB: Valgrind "blocks still reachable" warnings on plugin initialization Created: 2013-03-23  Updated: 2013-03-26  Resolved: 2013-03-26

Status: Closed
Project: MariaDB Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Technical task Priority: Minor
Reporter: Elena Stepanova Assignee: Sergei Petrunia
Resolution: Fixed Votes: 0
Labels: leveldb

Issue Links:
Relates

 Description   

==25585== 8 bytes in 1 blocks are still reachable in loss record 1 of 203
==25585==    at 0x4C2B1C7: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==25585==    by 0x506ED7D: leveldb::InitModule() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x58D63FF: pthread_once (pthread_once.S:104)
==25585==    by 0x5074258: leveldb::port::InitOnce(int*, void (*)()) (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x506EFF6: leveldb::BytewiseComparator() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x5073DA8: leveldb::Options::Options() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0xD47A9A: leveldb_init_func(void*) (ha_leveldb.cc:442)
==25585==    by 0x616A87: ha_initialize_handlerton(st_plugin_int*) (handler.cc:658)
==25585==    by 0x7B19C3: plugin_initialize(st_plugin_int*) (sql_plugin.cc:1126)
==25585==    by 0x7B233C: plugin_init(int*, char**, int) (sql_plugin.cc:1417)
==25585==    by 0x604C78: init_server_components() (mysqld.cc:4778)
==25585==    by 0x60592E: mysqld_main(int, char**) (mysqld.cc:5357)
==25585== 
==25585== 64 bytes in 1 blocks are still reachable in loss record 84 of 203
==25585==    at 0x4C2B1C7: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==25585==    by 0x5071FE2: leveldb::InitDefaultEnv() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x58D63FF: pthread_once (pthread_once.S:104)
==25585==    by 0x5071F26: leveldb::Env::Default() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x5073DBC: leveldb::Options::Options() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0xD47A9A: leveldb_init_func(void*) (ha_leveldb.cc:442)
==25585==    by 0x616A87: ha_initialize_handlerton(st_plugin_int*) (handler.cc:658)
==25585==    by 0x7B19C3: plugin_initialize(st_plugin_int*) (sql_plugin.cc:1126)
==25585==    by 0x7B233C: plugin_init(int*, char**, int) (sql_plugin.cc:1417)
==25585==    by 0x604C78: init_server_components() (mysqld.cc:4778)
==25585==    by 0x60592E: mysqld_main(int, char**) (mysqld.cc:5357)
==25585==    by 0x5FC893: main (main.cc:25)
==25585== 
==25585== 336 bytes in 1 blocks are still reachable in loss record 112 of 203
==25585==    at 0x4C2B1C7: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==25585==    by 0x5071F51: leveldb::InitDefaultEnv() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x58D63FF: pthread_once (pthread_once.S:104)
==25585==    by 0x5071F26: leveldb::Env::Default() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x5073DBC: leveldb::Options::Options() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0xD47A9A: leveldb_init_func(void*) (ha_leveldb.cc:442)
==25585==    by 0x616A87: ha_initialize_handlerton(st_plugin_int*) (handler.cc:658)
==25585==    by 0x7B19C3: plugin_initialize(st_plugin_int*) (sql_plugin.cc:1126)
==25585==    by 0x7B233C: plugin_init(int*, char**, int) (sql_plugin.cc:1417)
==25585==    by 0x604C78: init_server_components() (mysqld.cc:4778)
==25585==    by 0x60592E: mysqld_main(int, char**) (mysqld.cc:5357)
==25585==    by 0x5FC893: main (main.cc:25)
==25585== 
==25585== 512 bytes in 1 blocks are still reachable in loss record 117 of 203
==25585==    at 0x4C2B1C7: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==25585==    by 0x5072007: leveldb::InitDefaultEnv() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x58D63FF: pthread_once (pthread_once.S:104)
==25585==    by 0x5071F26: leveldb::Env::Default() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0x5073DBC: leveldb::Options::Options() (in /home/elenst/leveldb-1.7.0/libleveldb.so.1.7)
==25585==    by 0xD47A9A: leveldb_init_func(void*) (ha_leveldb.cc:442)
==25585==    by 0x616A87: ha_initialize_handlerton(st_plugin_int*) (handler.cc:658)
==25585==    by 0x7B19C3: plugin_initialize(st_plugin_int*) (sql_plugin.cc:1126)
==25585==    by 0x7B233C: plugin_init(int*, char**, int) (sql_plugin.cc:1417)
==25585==    by 0x604C78: init_server_components() (mysqld.cc:4778)
==25585==    by 0x60592E: mysqld_main(int, char**) (mysqld.cc:5357)
==25585==    by 0x5FC893: main (main.cc:25)

To reproduce, just start server with valgrind, e.g.

/usr/bin/valgrind.bin --suppressions=/data/bzr/mysql-5.6-leveldb/mysql-test/valgrind.supp --tool=memcheck --leak-check=yes --show-reachable=yes mysqld ...

and then shut down properly.

For MTR, it's enough to run a minimal test, e.g.

SELECT 1;

revision-id: psergey@askmonty.org-20130322111245-43wqvaouclxso5zo
revno: 4807
branch-nick: mysql-5.6-leveldb

(modified not to build unittest and built with cmake . -DCMAKE_BUILD_TYPE=Debug && make -j3)



 Comments   
Comment by Sergei Petrunia [ 2013-03-26 ]

Analyzed, fixed by adding suppressions

Generated at Thu Feb 08 06:55:31 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.