Bug #32156 Can not debug --with-libevent
Submitted: 7 Nov 2007 5:11 Modified: 12 Dec 2007 20:09
Reporter: Marc ALFF Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: General Severity:S3 (Non-critical)
Version:6.0 OS:Linux
Assigned to: Damien Katz CPU Architecture:Any

[7 Nov 2007 5:11] Marc ALFF
Description:
Found on Linux:

When building --without-libevent, sql/mysqld is a binary.

When building --with-libevent, sql/mysqld is a libtool script.
This actually prevents the debugger (gdb, ddd) to load the 'binary' code
for the server, and prevents debugging.

For example,
mysql-test-run.pl --ddd <test> does not work anymore for --with-libevent
builds.

How to repeat:
./configure --with-libevent
mysql-test-run-pl --ddd <test>

Suggested fix:
Unsure. Use a static library libevent.a ?
[8 Nov 2007 9:58] MySQL Verification Team
Thank you for the bug report.
[9 Nov 2007 21:37] 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/37490

ChangeSet@1.2657, 2007-11-09 16:37:15-05:00, dkatz@damien-katzs-computer.local +14 -0
  WL441:
  - use a list instead of pipe when adding THD for libevent processing
  - now we reset THD::mysys_var when we disassociate THD from physical thread to avoid problems with other threads when killing threads waiting for I/O
  - changed how threads are killed: use single pipe for awaking libevent instead of using one pipe for each THD
  
  ---
  Fix for broken SESSION DEBUG variables with pool-of-threads.
  
  We now preserve a connections SESSION DEBUG variable,  which is mapped to the OS 
  thread during a command, but each session command is handled by a different
  thread. After each command, we stored it in the thread_scheduler object and restore it before processing the next command.
  
  ---
  Bug#32156: fix libevent to staticically link with mysqld.
[12 Nov 2007 18:24] 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/37601

ChangeSet@1.2657, 2007-11-12 13:24:29-05:00, dkatz@damien-katzs-computer.local +15 -0
  WL441:
  - use a list instead of pipe when adding THD for libevent processing
  - now we reset THD::mysys_var when we disassociate THD from physical thread to avoid problems with other threads when killing threads waiting for I/O
  - changed how threads are killed: use single pipe for awaking libevent instead of using one pipe for each THD
  ---
  Fix for broken SESSION DEBUG variables with pool-of-threads.
  
  We now preserve a connections SESSION DEBUG variable,  which is mapped to the OS 
  thread during a command, but each session command is handled by a different
  thread. After each command, we store it in the thread_scheduler object and restore it before processing the next command.
  ---
  Bug#32156: fix libevent to staticically link with mysqld.
[13 Nov 2007 16:32] 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/37682

ChangeSet@1.2657, 2007-11-13 11:31:46-05:00, dkatz@damien-katzs-computer.local +15 -0
  WL#441: Use a thread pool to serve user requests
  - use a list instead of pipe when adding THD for libevent processing
  - now we reset THD::mysys_var when we disassociate THD from physical thread to avoid problems with other threads when killing threads waiting for I/O
  - changed how threads are killed: use single pipe for awaking libevent instead of using one pipe for each THD
  ---
  Fix for broken SESSION DEBUG variables with pool-of-threads.
  
  We now preserve a connections SESSION DEBUG variable,  which is mapped to the OS 
  thread during a command, but each session command is handled by a different
  thread. After each command, we store it in the thread_scheduler object and restore it before processing the next command.
  ---
  Bug#32156: fix libevent to statically link with mysqld.
[15 Nov 2007 13:25] Konstantin Osipov
Approved by email.
[15 Nov 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/37897

ChangeSet@1.2657, 2007-11-15 16:06:20-05:00, dkatz@damien-katzs-computer.local +15 -0
  WL#441: Use a thread pool to serve user requests
  - use a list instead of pipe when adding THD for libevent processing
  - now we reset THD::mysys_var when we disassociate THD from physical thread to avoid problems with other threads when killing threads waiting for I/O
  - changed how threads are killed: use single pipe for awaking libevent instead of using one pipe for each THD
  ---
  Fix for broken SESSION DEBUG variables with pool-of-threads. This is achieved by saving connection specific debug variable value in newly introduced thd_scheduler::dbug_explain_buf member when we disassociate THD from real thread and restoring it later then then we associate THD with thread back. This is temporary solution which should be replaced in following patches.
  ---
  Bug#32156: fix libevent to statically link with mysqld.
[21 Nov 2007 14:42] Damien Katz
pushed to 6.0-runtime.
[6 Dec 2007 10:01] Bugs System
Pushed into 6.0.5-alpha
[12 Dec 2007 20:09] Paul DuBois
Noted in 6.0.5 changelog.

When configure was run with --with-libevent, libevent was not linked
statically with mysqld, preventing mysqld from being run with a
debugger.