• Marc Alff's avatar
    Bug#13898343 THREAD LOOPS ENDLESSLY IN LF_PINBOX_PUT_PINS WHILE HOLDING · ea40710d
    Marc Alff authored
    LOCK_THREAD_COUNT
    
    When using the performance schema file io instrumentation in MySQL 5.5,
    a thread would loop forever inside lf_pinbox_put_pins, when disconnecting.
    It would also hold LOCK_thread_count while doing so, effectively killing the
    server.
    
    The root cause of the loop in lf_pinbox_put_pins() is a leak of LF_PINS,
    when used with the filename_hash LF_HASH table in the performance schema.
    
    This fix contains the following changes:
    
    1)
    Added the missing call to lf_hash_search_unpin(), to prevent the leak.
    
    2)
    In mysys/lf_alloc-pin.c, there was some extra debugging code
    (MY_LF_EXTRA_DEBUG) written to detect precisely this kind of issues,
    but it was never used.
    Replaced MY_LF_EXTRA_DEBUG with DBUG_OFF, so that leaks similar to this one
    can be always detected in regular debug builds.
    
    3)
    Backported the fix for the following bug, from 5.6 to 5.5:
    Bug#13417446 - 63339: INCORRECT FILE PATH IN PEFORMANCE_SCHEMA ON WINDOWS
    ea40710d
pfs_instr.cc 30.1 KB