Bug #26015 valgrind warning PollGuard::unlock_and_signal()/NdbCondition_Destroy
Submitted: 1 Feb 2007 16:04 Modified: 8 Feb 2007 7:46
Reporter: Tomas Ulin Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Replication Severity:S1 (Critical)
Version:5.1 OS:
Assigned to: Magnus BlÄudd CPU Architecture:Any

[1 Feb 2007 16:04] Tomas Ulin
Description:
first occurence found in ndb clone

Fri Dec 22 13:21:00 2006 msvensson [C=4] (60 lines)
    BUG#22694

VALGRIND: 'Invalid read of size 8'
    COUNT: 1
    FUNCTION: PollGuard::unlock_and_signal()    FILES:    slave.err
    TESTS:    rpl_ndb_auto_inc
    STACK: at 0x99144C: PollGuard::unlock_and_signal() (NdbWaiter.hpp:103)
             by 0x9926CF: PollGuard::wait_n_unlock(int, unsigned short, unsigned, bool) (TransporterFacade.cpp:1370)
             by 0x91E583: Ndb::sendRecSignal(unsigned short, unsigned, NdbApiSignal*, unsigned, unsigned*) (Ndbif.cpp:1416)
             by 0x919C78: Ndb::releaseConnectToNdb(NdbTransaction*) (Ndblist.cpp:467)
             by 0x91541E: Ndb::doDisconnect() (Ndb.cpp:234)
             by 0x91FF75: Ndb::~Ndb() (Ndbinit.cpp:147)
             by 0x712C59: Thd_ndb::~Thd_ndb() (ha_ndbcluster.cc:376)
             by 0x719EA7: ndbcluster_close_connection(handlerton*, THD*) (ha_ndbcluster.cc:5965)
             by 0x6FE85C: closecon_handlerton(THD*, st_plugin_int*, void*) (handler.cc:556)
             by 0x7D6BD8: plugin_foreach_with_mask(THD*, char (*)(THD*, st_plugin_int*, void*), int, unsigned, void*) (sql_plugin.cc:993)
             by 0x6019B5: THD::~THD() (sql_class.cc:477)
             by 0x78CD95: handle_slave_sql (slave.cc:2458)
             by 0x4D44192: start_thread (in /lib64/libpthread-2.4.so)
             by 0x52B745C: clone (in /lib64/libc-2.4.so)
           Address 0x54E99E8 is 656 bytes inside a block of size 1,312 free'd
             at 0x4A2046E: free (vg_replace_malloc.c:233)
             by 0x92000A: Ndb::~Ndb() (Ndbinit.cpp:164)
             by 0x7445F9: ndb_binlog_thread_func (ha_ndbcluster_binlog.cc:3992)
             by 0x4D44192: start_thread (in /lib64/libpthread-2.4.so)
             by 0x52B745C: clone (in /lib64/libc-2.4.so)

VALGRIND: 'Syscall param futex(futex) points to unaddressable byte(s)'
    COUNT: 1
    FUNCTION: __lll_mutex_lock_wait    FILES:    slave.err
    TESTS:    rpl_ndb_auto_inc
    STACK: at 0x4D49B48: __lll_mutex_lock_wait (in /lib64/libpthread-2.4.so)
           Address 0x54E9ED8 is 0 bytes inside a block of size 48 free'd
             at 0x4A2046E: free (vg_replace_malloc.c:233)
             by 0x98139A: NdbCondition_Destroy (NdbCondition.c:138)
             by 0x94BE8A: NdbDictionaryImpl::~NdbDictionaryImpl() (NdbDictionaryImpl.cpp:1387)
             by 0x920002: Ndb::~Ndb() (Ndbinit.cpp:164)
             by 0x7445F9: ndb_binlog_thread_func (ha_ndbcluster_binlog.cc:3992)
             by 0x4D44192: start_thread (in /lib64/libpthread-2.4.so)
             by 0x52B745C: clone (in /lib64/libc-2.4.so)

VALGRIND: 'Invalid read of size 4'
    COUNT: 1
    FUNCTION: pthread_cond_signal@@GLIBC_2.3.2    FILES:    slave.err
    TESTS:    rpl_ndb_auto_inc
    STACK: at 0x4D47B4A: pthread_cond_signal@@GLIBC_2.3.2 (in /lib64/libpthread-2.4.so)
           Address 0x54E9ED8 is 0 bytes inside a block of size 48 free'd
             at 0x4A2046E: free (vg_replace_malloc.c:233)
             by 0x98139A: NdbCondition_Destroy (NdbCondition.c:138)
             by 0x94BE8A: NdbDictionaryImpl::~NdbDictionaryImpl() (NdbDictionaryImpl.cpp:1387)
             by 0x920002: Ndb::~Ndb() (Ndbinit.cpp:164)
             by 0x7445F9: ndb_binlog_thread_func (ha_ndbcluster_binlog.cc:3992)
             by 0x4D44192: start_thread (in /lib64/libpthread-2.4.so)
             by 0x52B745C: clone (in /lib64/libc-2.4.so)

How to repeat:
Shows up occasionally in pbuild valgrind
[6 Feb 2007 21:06] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/19448

ChangeSet@1.2425, 2007-02-06 22:06:13+01:00, msvensson@pilot.mysql.com +1 -0
  Bug#26015 valgrind warning PollGuard::unlock_and_signal()/NdbCondition_Destroy
  - Add variable "ndbcluster_binlog_terminating" and use that to signal
  the cluster binlog thread it's time to shutdown. This allows
  exact control of when the thread shutdown, previous implementation 
  would start shutdown of the thread as soon as the mysqld started
  shutdown. Now we will shutdown cluster binlog thread 
  in 'ndbcluster_binlog_end'
[7 Feb 2007 17:15] Tomas Ulin
pushed to 5.1.16
[8 Feb 2007 7:46] Jon Stephens
Thank you for your bug report. This issue has been committed to our source repository of that product and will be incorporated into the next release.

If necessary, you can access the source repository and build the latest available version, including the bug fix. More information about accessing the source trees is available at

    http://dev.mysql.com/doc/en/installing-source.html

Documented bugfix in 5.1.16 changelog.

Changed bug category to Cluster:Replication.