Bug #89597 Valgrind reporting memory leak on MTR test main.validate_password_component
Submitted: 9 Feb 4:41 Modified: 21 Mar 16:34
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Tests Severity:S3 (Non-critical)
Version:8.0.4 OS:Any
Assigned to: CPU Architecture:Any
Tags: valgrind

[9 Feb 4:41] Laurynas Biveinis
Description:
Valgrind on MTR test main.validate_password_component reports memory leaks:

main.validate_password_component         [ pass ]  864493
worker[1] Valgrind report from /home/laurynas/obj-mysql-8.0.4-valgrind/mysql-test/var/log/mysqld.1.err after tests:
 main.validate_password_component
--------------------------------------------------------------------------
HEAP SUMMARY:
    in use at exit: 8,672 bytes in 16 blocks
  total heap usage: 488,121 allocs, 488,105 frees, 453,722,148 bytes allocated

20 bytes in 1 blocks are definitely lost in loss record 3 of 9
   at 0x3949BB8: my_malloc (my_malloc.cc:92)
   by 0x26875834: ???
   by 0x26875A56: ???
   by 0x26877C1D: ???
   by 0x3FE05FB: mysql_dynamic_loader_imp::load_do_initialize_components(std::vector<std::unique_ptr<mysql_component, std::default_delete<mysql_component> >, std::allocator<std::unique_ptr<mysql_component, std::default_delete<mysql_component> > > >&) (dynamic_loader.cc:818)
   by 0x3FE03CA: mysql_dynamic_loader_imp::load_do_resolve_dependencies(std::vector<std::unique_ptr<mysql_component, std::default_delete<mysql_component> >, std::allocator<std::unique_ptr<mysql_component, std::default_delete<mysql_component> > > >&) (dynamic_loader.cc:774)
   by 0x3FE0082: mysql_dynamic_loader_imp::load_do_register_services(std::vector<std::unique_ptr<mysql_component, std::default_delete<mysql_component> >, std::allocator<std::unique_ptr<mysql_component, std::default_delete<mysql_component> > > >&) (dynamic_loader.cc:721)
   by 0x3FDFD80: mysql_dynamic_loader_imp::load_do_check_dependencies(std::vector<std::unique_ptr<mysql_component, std::default_delete<mysql_component> >, std::allocator<std::unique_ptr<mysql_component, std::default_delete<mysql_component> > > >&, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) (dynamic_loader.cc:674)
   by 0x3FDFA5A: mysql_dynamic_loader_imp::load_do_collect_services_provided(std::vector<std::unique_ptr<mysql_component, std::default_delete<mysql_component> >, std::allocator<std::unique_ptr<mysql_component, std::default_delete<mysql_component> > > >&) (dynamic_loader.cc:624)
   by 0x3FDF6B2: mysql_dynamic_loader_imp::load_do_load_component_by_scheme(char const**, int) (dynamic_loader.cc:576)
   by 0x3FDEB48: mysql_dynamic_loader_imp::load(char const**, int) (dynamic_loader.cc:251)
   by 0x2A801CC: mysql_persistent_dynamic_loader_imp::load(void*, char const**, int) (persistent_dynamic_loader.cc:383)
   by 0x2E58C17: Sql_cmd_install_component::execute(THD*) (sql_component.cc:69)
   by 0x2712696: mysql_execute_command(THD*, bool) (sql_parse.cc:4644)
   by 0x2714FD9: mysql_parse(THD*, Parser_state*) (sql_parse.cc:5440)
   by 0x270A65D: dispatch_command(THD*, COM_DATA const*, enum_server_command) (sql_parse.cc:1730)

20 bytes in 1 blocks are definitely lost in loss record 4 of 9
   at 0x3949BB8: my_malloc (my_malloc.cc:92)
   by 0x26875834: ???
   by 0x26875A56: ???
   by 0x268768AB: ???
   by 0x274770E: plugin_var_memalloc_global_update(THD*, st_mysql_sys_var*, char**, char const*) (sql_plugin_var.cc:74)
   by 0x2748559: sys_var_pluginvar::global_update(THD*, set_var*) (sql_plugin_var.cc:444)
   by 0x26431FC: sys_var::update(THD*, set_var*) (set_var.cc:261)
   by 0x26439BE: sys_var::set_default(THD*, set_var*) (set_var.cc:364)
   by 0x26458F7: set_var::update(THD*) (set_var.cc:1115)
   by 0x2644D00: sql_set_variables(THD*, List<set_var_base>*, bool) (set_var.cc:844)
   by 0x270F3F7: mysql_execute_command(THD*, bool) (sql_parse.cc:3558)
   by 0x2714FD9: mysql_parse(THD*, Parser_state*) (sql_parse.cc:5440)
   by 0x270A65D: dispatch_command(THD*, COM_DATA const*, enum_server_command) (sql_parse.cc:1730)
   by 0x2709028: do_command(THD*) (sql_parse.cc:1310)
   by 0x2AA25A1: handle_connection (connection_handler_per_thread.cc:335)
   by 0x3F00EA5: pfs_spawn_thread (pfs.cc:2994)

60 bytes in 3 blocks are definitely lost in loss record 8 of 9
   at 0x3949BB8: my_malloc (my_malloc.cc:92)
   by 0x26875834: ???
   by 0x26875C90: ???
   by 0x268768AB: ???
   by 0x274770E: plugin_var_memalloc_global_update(THD*, st_mysql_sys_var*, char**, char const*) (sql_plugin_var.cc:74)
   by 0x2748559: sys_var_pluginvar::global_update(THD*, set_var*) (sql_plugin_var.cc:444)
   by 0x26431FC: sys_var::update(THD*, set_var*) (set_var.cc:261)
   by 0x26458D4: set_var::update(THD*) (set_var.cc:1113)
   by 0x2644D00: sql_set_variables(THD*, List<set_var_base>*, bool) (set_var.cc:844)
   by 0x270F3F7: mysql_execute_command(THD*, bool) (sql_parse.cc:3558)
   by 0x2714FD9: mysql_parse(THD*, Parser_state*) (sql_parse.cc:5440)
   by 0x270A65D: dispatch_command(THD*, COM_DATA const*, enum_server_command) (sql_parse.cc:1730)
   by 0x2709028: do_command(THD*) (sql_parse.cc:1310)
   by 0x2AA25A1: handle_connection (connection_handler_per_thread.cc:335)
   by 0x3F00EA5: pfs_spawn_thread (pfs.cc:2994)
   by 0x67BA7FB: start_thread (pthread_create.c:465)

LEAK SUMMARY:
   definitely lost: 100 bytes in 5 blocks
   indirectly lost: 0 bytes in 0 blocks
     possibly lost: 0 bytes in 0 blocks
   still reachable: 0 bytes in 0 blocks
        suppressed: 8,312 bytes in 6 blocks

Not sure what the correct bug category should be, please adjust.

How to repeat:
$ ./mtr --debug-server --valgrind validate_password_component
[9 Feb 10:13] Umesh Shastry
Hello Laurynas,

Thank you for the report and feedback.

Thanks,
Umesh
[9 Feb 10:18] Umesh Shastry
test results

Attachment: 89597.results (application/octet-stream, text), 24.13 KiB.

[21 Mar 16:34] Paul Dubois
Posted by developer:
 
Fixed in 8.0.11.

The validate_password component could leak memory.