~ubuntu-branches/ubuntu/lucid/mysql-dfsg-5.1/lucid-security

« back to all changes in this revision

Viewing changes to storage/innobase/sync/sync0arr.c

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2012-02-22 22:33:55 UTC
  • mfrom: (1.1.5)
  • Revision ID: package-import@ubuntu.com-20120222223355-or06x1euyk8n0ldi
Tags: 5.1.61-0ubuntu0.10.04.1
* SECURITY UPDATE: Update to 5.1.61 to fix multiple security issues
  (LP: #937869)
  - http://www.oracle.com/technetwork/topics/security/cpujan2012-366304.html
  - CVE-2011-2262
  - CVE-2012-0075
  - CVE-2012-0112
  - CVE-2012-0113
  - CVE-2012-0114
  - CVE-2012-0115
  - CVE-2012-0116
  - CVE-2012-0117
  - CVE-2012-0118
  - CVE-2012-0119
  - CVE-2012-0120
  - CVE-2012-0484
  - CVE-2012-0485
  - CVE-2012-0486
  - CVE-2012-0487
  - CVE-2012-0488
  - CVE-2012-0489
  - CVE-2012-0490
  - CVE-2012-0491
  - CVE-2012-0492
  - CVE-2012-0493
  - CVE-2012-0494
  - CVE-2012-0495
  - CVE-2012-0496
* Dropped patches unnecessary with 5.1.61:
  - debian/patches/90_mysql_safer_strmov.dpatch
  - debian/patches/51_ssl_test_certs.dpatch
  - debian/patches/52_CVE-2009-4030.dpatch
  - debian/patches/53_CVE-2009-4484.dpatch
  - debian/patches/54_CVE-2008-7247.dpatch
  - debian/patches/55_CVE-2010-1621.dpatch
  - debian/patches/56_CVE-2010-1850.dpatch
  - debian/patches/57_CVE-2010-1849.dpatch
  - debian/patches/58_CVE-2010-1848.dpatch
  - debian/patches/59_CVE-2010-1626.dpatch
  - debian/patches/60_CVE-2010-2008.dpatch
  - debian/patches/60_CVE-2010-3677.dpatch
  - debian/patches/60_CVE-2010-3678.dpatch
  - debian/patches/60_CVE-2010-3679.dpatch
  - debian/patches/60_CVE-2010-3680.dpatch
  - debian/patches/60_CVE-2010-3681.dpatch
  - debian/patches/60_CVE-2010-3682.dpatch
  - debian/patches/60_CVE-2010-3683.dpatch
  - debian/patches/60_CVE-2010-3833.dpatch
  - debian/patches/60_CVE-2010-3834.dpatch
  - debian/patches/60_CVE-2010-3835.dpatch
  - debian/patches/60_CVE-2010-3836.dpatch
  - debian/patches/60_CVE-2010-3837.dpatch
  - debian/patches/60_CVE-2010-3838.dpatch
  - debian/patches/60_CVE-2010-3839.dpatch
  - debian/patches/60_CVE-2010-3840.dpatch
  - debian/patches/61_disable_longfilename_test.dpatch
  - debian/patches/62_alter_table_fix.dpatch
  - debian/patches/63_cherrypick-upstream-49479.dpatch
  - debian/patches/10_readline_build_fix.dpatch
* debian/mysql-client-5.1.docs: removed EXCEPTIONS-CLIENT file
* debian/mysql-server-5.1.docs,debian/libmysqlclient16.docs,
  debian/libmysqlclient-dev.docs: removed, no longer necessary.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/******************************************************
2
2
The wait array used in synchronization primitives
3
3
 
4
 
(c) 1995 Innobase Oy
 
4
Copyright (c) 1995, 2011, Oracle and/or its affiliates. All Rights Reserved.
5
5
 
6
6
Created 9/5/1995 Heikki Tuuri
7
7
*******************************************************/
709
709
                                        fprintf(stderr, "rw-lock %p ",
710
710
                                                (void*) lock);
711
711
                                        sync_array_cell_print(stderr, cell);
712
 
                                        rw_lock_debug_print(debug);
 
712
                                        rw_lock_debug_print(stderr, debug);
713
713
                                        return(TRUE);
714
714
                                }
715
715
                        }
916
916
Prints warnings of long semaphore waits to stderr. */
917
917
 
918
918
ibool
919
 
sync_array_print_long_waits(void)
920
 
/*=============================*/
921
 
                        /* out: TRUE if fatal semaphore wait threshold
922
 
                        was exceeded */
 
919
sync_array_print_long_waits(
 
920
/*========================*/
 
921
                                /* out: TRUE if fatal semaphore wait threshold
 
922
                                was exceeded */
 
923
        os_thread_id_t* waiter, /* out: longest waiting thread */
 
924
        const void**    sema)   /* out: longest-waited-for semaphore */
923
925
{
924
926
        sync_cell_t*    cell;
925
927
        ibool           old_val;
927
929
        ulint           i;
928
930
        ulint           fatal_timeout = srv_fatal_semaphore_wait_threshold;
929
931
        ibool           fatal = FALSE;
 
932
        double          longest_diff = 0;
930
933
 
931
934
        for (i = 0; i < sync_primary_wait_array->n_cells; i++) {
932
935
 
 
936
                double  diff;
 
937
                void*   wait_object;
 
938
 
933
939
                cell = sync_array_get_nth_cell(sync_primary_wait_array, i);
934
940
 
935
 
                if (cell->wait_object != NULL && cell->waiting
936
 
                    && difftime(time(NULL), cell->reservation_time) > 240) {
 
941
                wait_object = cell->wait_object;
 
942
 
 
943
                if (wait_object == NULL || !cell->waiting) {
 
944
 
 
945
                        continue;
 
946
                }
 
947
 
 
948
                diff = difftime(time(NULL), cell->reservation_time);
 
949
 
 
950
                if (diff > 240) {
937
951
                        fputs("InnoDB: Warning: a long semaphore wait:\n",
938
952
                              stderr);
939
953
                        sync_array_cell_print(stderr, cell);
940
954
                        noticed = TRUE;
941
955
                }
942
956
 
943
 
                if (cell->wait_object != NULL && cell->waiting
944
 
                    && difftime(time(NULL), cell->reservation_time)
945
 
                    > fatal_timeout) {
 
957
                if (diff > fatal_timeout) {
946
958
                        fatal = TRUE;
947
959
                }
 
960
 
 
961
                if (diff > longest_diff) {
 
962
                        longest_diff = diff;
 
963
                        *sema = wait_object;
 
964
                        *waiter = cell->thread;
 
965
                }
948
966
        }
949
967
 
950
968
        if (noticed) {