Bug #70628 Wrong instrumentation interface for mysql_cond_timedwait
Submitted: 15 Oct 2013 23:44 Modified: 19 Nov 2013 16:22
Reporter: Davi Arnaut (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Performance Schema Severity:S3 (Non-critical)
Version:5.5,5.6,5.7 OS:Any
Assigned to: Marc ALFF CPU Architecture:Any

[15 Oct 2013 23:44] Davi Arnaut
Description:
The mysql_cond_timedwait interface fails to properly mimic the interface of
pthread_cond_timedwait, its third argument (struct timespec *abstime) is not
constant.

This forces code that was previously working fine with pthread_cond_timedwait
to unneedlessly remove the const attribute.

How to repeat:
Attempt to use mysql_cond_timedwait with a constant struct timespec object.
[30 Oct 2013 9:56] MySQL Verification Team
Hello Davi,

Thank you for the report.

Thanks,
Umesh
[4 Nov 2013 8:28] Marc ALFF
Hi Davi ;)

Looks like someone is instrumenting code ...

Thanks for the report.
[19 Nov 2013 16:22] Paul DuBois
Noted in 5.5.36, 5.6.16, 5.7.4 changelogs.

The prototype of the Performance Schema instrumentation API
mysql_cond_timedwait() call was fixed to be drop-in compatible with
pthread_cond_timedwait(). This fix affects only implementers of
third-party plugins.
[2 Feb 2014 17:26] Laurynas Biveinis
5.5$ bzr log -r 4543 -n0
------------------------------------------------------------
revno: 4543 [merge]
committer: Marc Alff <marc.alff@oracle.com>
branch nick: mysql-5.5-push
timestamp: Thu 2013-11-07 18:29:43 +0100
message:
  Push to mysql-5.5
    ------------------------------------------------------------
    revno: 4538.1.1
    committer: Marc Alff <marc.alff@oracle.com>
    branch nick: mysql-5.5-bug17702677
    timestamp: Wed 2013-11-06 10:22:00 +0100
    message:
      Bug#17702677 WRONG INSTRUMENTATION INTERFACE FOR MYSQL_COND_TIMEDWAIT
      
      The pthread_cond_timedwait(3P) api
      uses a const struct timespec for parameter 3.
      
      The instrumentation api for the same, mysql_cond_timedwait,
      which expands to inline_mysql_cond_timedwait,
      should also take a const parameter for the timespec.
      
      This fix add the missing const to inline_mysql_cond_timedwait.
[2 Feb 2014 17:26] Laurynas Biveinis
5.5$ bzr log -r 4544
------------------------------------------------------------
revno: 4544
committer: Christopher Powers <chris.powers@oracle.com>
branch nick: mysql-5.5
timestamp: Thu 2013-11-07 15:44:57 -0600
message:
  Bug#17702677 WRONG INSTRUMENTATION INTERFACE FOR MYSQL_COND_TIMEDWAIT
  
  Fix Windows build break
[3 Feb 2014 10:19] Laurynas Biveinis
5.6$ bzr log -r 5603
------------------------------------------------------------
revno: 5603
committer: Christopher Powers <chris.powers@oracle.com>
branch nick: mysql-5.6
timestamp: Thu 2013-11-07 16:45:59 -0600
message:
  Bug#17702677 WRONG INSTRUMENTATION INTERFACE FOR MYSQL_COND_TIMEDWAIT
  
  Fix Windows build break