• unknown's avatar
    BUG#25659 - memory leak via "plugins" test · c367385f
    unknown authored
    - Added suppressions for dlopen to make plugin test pass.
    - Do not pass empty string to mysqld, since my_getopt is
      not capable to handle it.
    - Re-enabled trailing UNINSTALL PLUGIN statement of plugin.test.
    
    The memory leak described in the bug report happens in libdl, not
    in mysqld. On some valgrind installations this error is suppressed
    by default, no idea why it isn't suppressed on pb-valgrind.
    
    <observation>
    If library remains open after thread has finished, and is closed by
    another thread, we get memory leak. But in case library is opened and
    closed by the same thread no leak occurs.
    </observation>
    
    
    mysql-test/lib/mtr_io.pl:
      Do not pass empty string since my_getopt is not capable to handle it.
      This is required to make plugin.test work on platforms where
      ha_example is not compiled.
    mysql-test/r/plugin.result:
      Updated test result.
    mysql-test/t/plugin.test:
      Re-enabled UNINSTALL PLUGIN statement. It is a good idea to cleanup
      at the end of the test. Anyway bug22694 was fixed while this test
      was disabled.
    mysql-test/valgrind.supp:
      Added suppressions for dlopen to make plugin test pass.
    c367385f
plugin.test 518 Bytes
--source include/have_example_plugin.inc

CREATE TABLE t1(a int) ENGINE=EXAMPLE;
DROP TABLE t1;

INSTALL PLUGIN example SONAME 'ha_example.so';
--error 1125
INSTALL PLUGIN EXAMPLE SONAME 'ha_example.so';

UNINSTALL PLUGIN example;

INSTALL PLUGIN example SONAME 'ha_example.so';

CREATE TABLE t1(a int) ENGINE=EXAMPLE;

# Let's do some advanced ops with the example engine :)
SELECT * FROM t1;

DROP TABLE t1;

UNINSTALL PLUGIN example;
--error 1305
UNINSTALL PLUGIN EXAMPLE;

--error 1305
UNINSTALL PLUGIN non_exist;