Kill idle transaction debug build assert: safe_mutex: Trying to destroy a mutex that was locked at sql_class.cc, line 880 at sql_class.cc, line 1773
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS | Status tracked in 5.7 | |||||
5.1 |
Won't Fix
|
High
|
Unassigned | |||
5.5 |
Won't Fix
|
High
|
Laurynas Biveinis | |||
5.6 |
Fix Released
|
High
|
Laurynas Biveinis | |||
5.7 |
Fix Released
|
High
|
Laurynas Biveinis |
Bug Description
00:58:33.455 innodb.
00:58:33.455 Test ended at 2013-05-10 16:22:05
00:58:33.455
00:58:33.455 CURRENT_TEST: innodb.
00:58:33.455 mysqltest: At line 24: query 'SELECT * FROM t1' failed: 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 104
00:58:33.455
00:58:33.455 The result from queries just before the failure was:
00:58:33.455 < snip >
00:58:33.455 SELECT * FROM INFORMATION_
00:58:33.455 VARIABLE_NAME VARIABLE_VALUE
00:58:33.455 INNODB_
00:58:33.455 SET GLOBAL innodb_
00:58:33.455 SHOW GLOBAL VARIABLES LIKE 'innodb_
00:58:33.455 Variable_name Value
00:58:33.455 innodb_
00:58:33.455 SELECT * FROM INFORMATION_
00:58:33.455 VARIABLE_NAME VARIABLE_VALUE
00:58:33.455 INNODB_
00:58:33.455 BEGIN;
00:58:33.455 INSERT INTO t1 VALUES (1),(2),(3);
00:58:33.455 COMMIT;
00:58:33.455 SELECT * FROM t1;
00:58:33.455 a
00:58:33.455 1
00:58:33.455 2
00:58:33.455 3
00:58:33.455 BEGIN;
00:58:33.455 INSERT INTO t1 VALUES (4),(5),(6);
00:58:33.455
00:58:33.455 More results from queries before failure can be found in /mnt/workspace/
00:58:33.455
00:58:33.455
00:58:33.455 Server [mysqld.1 - pid: 373, winpid: 373, exit: 256] failed during test run
00:58:33.455 Server log from this test:
00:58:33.455 ----------SERVER LOG START-----------
00:58:33.455 safe_mutex: Trying to destroy a mutex that was locked at /mnt/workspace/
00:58:33.455 16:22:05 UTC - mysqld got signal 6 ;
00:58:33.455 This could be because you hit a bug. It is also possible that this binary
00:58:33.455 or one of the libraries it was linked against is corrupt, improperly built,
00:58:33.455 or misconfigured. This error can also be caused by malfunctioning hardware.
00:58:33.455 We will try our best to scrape up some info that will hopefully help
00:58:33.455 diagnose the problem, but since we have already crashed,
00:58:33.455 something is definitely wrong and this may fail.
00:58:33.455 Please help us make Percona Server better by reporting any
00:58:33.455 bugs at http://
00:58:33.455
00:58:33.455 key_buffer_
00:58:33.455 read_buffer_
00:58:33.455 max_used_
00:58:33.455 max_threads=153
00:58:33.455 thread_count=0
00:58:33.455 connection_count=0
00:58:33.455 It is possible that mysqld could use up to
00:58:33.455 key_buffer_size + (read_buffer_size + sort_buffer_
00:58:33.455 Hope that's ok; if not, decrease some variables in the equation.
00:58:33.455
00:58:33.455 Thread pointer: 0x2f76c80
00:58:33.455 Attempting backtrace. You can use the following information to find out
00:58:33.455 where mysqld died. If you see no messages after this, something went
00:58:33.455 terribly wrong...
00:58:33.455 stack_bottom = 7ff68fffedf0 thread_stack 0x40000
00:58:33.455 /mnt/workspace/
00:58:33.455 /mnt/workspace/
00:58:33.455 /lib/x86_
00:58:33.455 /lib/x86_
00:58:33.455 /lib/x86_
00:58:33.455 /mnt/workspace/
00:58:33.455 /mnt/workspace/
00:58:33.455 /mnt/workspace/
00:58:33.455 /mnt/workspace/
00:58:33.455 /mnt/workspace/
00:58:33.455 /mnt/workspace/
00:58:33.455 /mnt/workspace/
00:58:33.455 /mnt/workspace/
00:58:33.455 /lib/x86_
00:58:33.455 /lib/x86_
00:58:33.455
00:58:33.455 Trying to get some variables.
00:58:33.455 Some pointers may be invalid and cause the dump to abort.
00:58:33.455 Query (0): Connection ID (thread ID): 9
00:58:33.455 Status: KILL_CONNECTION
00:58:33.455
00:58:33.455 You may download the Percona Server operations manual by visiting
00:58:33.455 http://
00:58:33.455 in the manual which will help you identify the cause of the crash.
00:58:33.455 Writing a core file
00:58:33.455 ----------SERVER LOG END-------------
00:58:33.455
00:58:33.455
00:58:33.455 - saving '/mnt/workspace
00:58:33.455 - found 'core' (0/5)
00:58:33.455
00:58:33.455 Trying 'dbx' to get a backtrace
00:58:33.456
00:58:33.456 Trying 'gdb' to get a backtrace
00:58:36.839 Guessing that core was generated by '/mnt/workspace
00:58:40.335 Output from gdb follows. The first stack trace is from the failing thread.
00:58:40.335 The following stack traces are from all threads (so the failing one is
00:58:40.335 duplicated).
00:58:40.335 -------
00:58:40.335 [New LWP 434]
00:58:40.335 [New LWP 380]
00:58:40.335 [New LWP 381]
00:58:40.335 [New LWP 379]
00:58:40.335 [New LWP 383]
00:58:40.335 [New LWP 420]
00:58:40.335 [New LWP 378]
00:58:40.335 [New LWP 421]
00:58:40.335 [New LWP 382]
00:58:40.335 [New LWP 422]
00:58:40.335 [New LWP 432]
00:58:40.335 [New LWP 430]
00:58:40.335 [New LWP 374]
00:58:40.335 [New LWP 423]
00:58:40.335 [New LWP 433]
00:58:40.335 [New LWP 431]
00:58:40.335 [New LWP 428]
00:58:40.335 [New LWP 424]
00:58:40.335
00:58:40.335 warning: Can't read pathname for load map: Input/output error.
00:58:40.335 [Thread debugging using libthread_db enabled]
00:58:40.335 Using host libthread_db library "/lib/x86_
00:58:40.335 Core was generated by `/mnt/workspace
00:58:40.335 Program terminated with signal 6, Aborted.
00:58:40.335 #0 __pthread_kill (threadid=
00:58:40.335 63 ../nptl/
00:58:40.335 #0 __pthread_kill (threadid=
00:58:40.335 #1 0x0000000000aa8c2c in my_write_core (sig=6) at /mnt/workspace/
00:58:40.335 #2 0x00000000007285b9 in handle_fatal_signal (sig=6) at /mnt/workspace/
00:58:40.335 #3 <signal handler called>
00:58:40.335 #4 0x00007ff6acf4c425 in __GI_raise (sig=<optimized out>) at ../nptl/
00:58:40.335 #5 0x00007ff6acf4fb8b in __GI_abort () at abort.c:91
00:58:40.335 #6 0x0000000000aad715 in safe_mutex_destroy (mp=0x2f77ca0, file=0xf1b180 "/mnt/workspace
00:58:40.335 #7 0x0000000000788442 in inline_
00:58:40.335 #8 0x000000000078c90b in THD::~THD (this=0x2f76c80, __in_chrg=
00:58:40.335 #9 0x000000000078cd5a in THD::~THD (this=0x2f76c80, __in_chrg=
00:58:40.335 #10 0x0000000000620226 in one_thread_
00:58:40.335 #11 0x000000000079b9a5 in do_handle_
00:58:40.335 #12 0x000000000079b2f3 in handle_
00:58:40.335 #13 0x0000000000b02e5c in pfs_spawn_thread (arg=0x2eed5d0) at /mnt/workspace/
00:58:40.335 #14 0x00007ff6adaeee9a in start_thread (arg=0x7ff68fff
00:58:40.335 #15 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #16 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 18 (Thread 0x7ff69e5c5700 (LWP 424)):
00:58:40.335 #0 pthread_
00:58:40.335 #1 0x0000000000c16eca in os_cond_wait (cond=0x2da93c0, fast_mutex=
00:58:40.335 #2 0x0000000000c17444 in os_event_wait_low (event=0x2da9380, reset_sig_count=5) at /mnt/workspace/
00:58:40.335 #3 0x0000000000cdbf25 in srv_purge_
00:58:40.335 #4 0x0000000000cdc437 in srv_purge_
00:58:40.335 #5 0x00007ff6adaeee9a in start_thread (arg=0x7ff69e5c
00:58:40.335 #6 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #7 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 17 (Thread 0x7ff6a0dca700 (LWP 428)):
00:58:40.335 #0 0x00007ff6ad003033 in select () at ../sysdeps/
00:58:40.335 #1 0x0000000000c181c8 in os_thread_sleep (tm=1000000) at /mnt/workspace/
00:58:40.335 #2 0x0000000000d7a800 in page_cleaner_
00:58:40.335 #3 0x0000000000d7a8f5 in buf_flush_
00:58:40.335 #4 0x00007ff6adaeee9a in start_thread (arg=0x7ff6a0dc
00:58:40.335 #5 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #6 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 16 (Thread 0x7ff69d5c3700 (LWP 431)):
00:58:40.335 #0 pthread_
00:58:40.335 #1 0x0000000000c16dd0 in os_cond_wait_timed (cond=0x2e9d090, fast_mutex=
00:58:40.335 #2 0x0000000000c1762d in os_event_
00:58:40.335 #3 0x0000000000dbfa11 in dict_stats_thread (arg=0x0) at /mnt/workspace/
00:58:40.335 #4 0x00007ff6adaeee9a in start_thread (arg=0x7ff69d5c
00:58:40.335 #5 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #6 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 15 (Thread 0x7ff6ac05d700 (LWP 433)):
00:58:40.335 #0 do_sigwait (set=<optimized out>, sig=0x7ff6ac05ce48) at ../nptl/
00:58:40.335 #1 0x00007ff6adaf6a79 in __sigwait (set=<optimized out>, sig=<optimized out>) at ../nptl/
00:58:40.335 #2 0x0000000000620d22 in signal_hand (arg=0x0) at /mnt/workspace/
00:58:40.335 #3 0x0000000000b02e5c in pfs_spawn_thread (arg=0x2ee7120) at /mnt/workspace/
00:58:40.335 #4 0x00007ff6adaeee9a in start_thread (arg=0x7ff6ac05
00:58:40.335 #5 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #6 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 14 (Thread 0x7ff69edc6700 (LWP 423)):
00:58:40.335 #0 0x00007ff6ad003033 in select () at ../sysdeps/
00:58:40.335 #1 0x0000000000c181c8 in os_thread_sleep (tm=1000000) at /mnt/workspace/
00:58:40.335 #2 0x0000000000cdb4e5 in srv_master_sleep () at /mnt/workspace/
00:58:40.335 #3 0x0000000000cdb610 in srv_master_thread (arg=0x0) at /mnt/workspace/
00:58:40.335 #4 0x00007ff6adaeee9a in start_thread (arg=0x7ff69edc
00:58:40.335 #5 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #6 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 13 (Thread 0x7ff6ae95f740 (LWP 374)):
00:58:40.335 #0 0x00007ff6acffe313 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/
00:58:40.335 #1 0x0000000000626783 in handle_
00:58:40.335 #2 0x000000000062583d in mysqld_main (argc=77, argv=0x2c88888) at /mnt/workspace/
00:58:40.335 #3 0x000000000061a7a4 in main (argc=7, argv=0x7fffe513
00:58:40.335
00:58:40.335 Thread 12 (Thread 0x7ff69ddc4700 (LWP 430)):
00:58:40.335 #0 pthread_
00:58:40.335 #1 0x0000000000c16eca in os_cond_wait (cond=0x2da9570, fast_mutex=
00:58:40.335 #2 0x0000000000c17444 in os_event_wait_low (event=0x2da9530, reset_sig_count=1) at /mnt/workspace/
00:58:40.335 #3 0x0000000000d73558 in buf_dump_thread (arg=0x0) at /mnt/workspace/
00:58:40.335 #4 0x00007ff6adaeee9a in start_thread (arg=0x7ff69ddc
00:58:40.335 #5 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #6 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 11 (Thread 0x7ff69cdc2700 (LWP 432)):
00:58:40.335 #0 pthread_
00:58:40.335 #1 0x0000000000c16dd0 in os_cond_wait_timed (cond=0x2eeeba0, fast_mutex=
00:58:40.335 #2 0x0000000000c1762d in os_event_
00:58:40.335 #3 0x0000000000d1f7d7 in ib_wqueue_timedwait (wq=0x2eea0d8, wait_in_
00:58:40.335 #4 0x0000000000dfd9da in fts_optimize_thread (arg=0x2eea0d8) at /mnt/workspace/
00:58:40.335 #5 0x00007ff6adaeee9a in start_thread (arg=0x7ff69cdc
00:58:40.335 #6 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #7 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 10 (Thread 0x7ff69f5c7700 (LWP 422)):
00:58:40.335 #0 pthread_
00:58:40.335 #1 0x0000000000c16dd0 in os_cond_wait_timed (cond=0x2da94e0, fast_mutex=
00:58:40.335 #2 0x0000000000c1762d in os_event_
00:58:40.335 #3 0x0000000000cd9822 in srv_monitor_thread (arg=0x0) at /mnt/workspace/
00:58:40.335 #4 0x00007ff6adaeee9a in start_thread (arg=0x7ff69f5c
00:58:40.335 #5 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #6 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 9 (Thread 0x7ff6a21d3700 (LWP 382)):
00:58:40.335 #0 0x00007ff6ae349644 in ?? () from /lib/x86_
00:58:40.335 #1 0x0000000000c14808 in os_aio_
00:58:40.335 #2 0x0000000000c14bd8 in os_aio_linux_handle (global_seg=4, message1=
00:58:40.335 #3 0x0000000000dd2144 in fil_aio_wait (segment=4) at /mnt/workspace/
00:58:40.335 #4 0x0000000000cdeead in io_handler_thread (arg=0x186dea0) at /mnt/workspace/
00:58:40.335 #5 0x00007ff6adaeee9a in start_thread (arg=0x7ff6a21d
00:58:40.335 #6 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #7 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 8 (Thread 0x7ff69fdc8700 (LWP 421)):
00:58:40.335 #0 pthread_
00:58:40.335 #1 0x0000000000c16dd0 in os_cond_wait_timed (cond=0x2da9450, fast_mutex=
00:58:40.335 #2 0x0000000000c1762d in os_event_
00:58:40.335 #3 0x0000000000cd9fe0 in srv_error_
00:58:40.335 #4 0x00007ff6adaeee9a in start_thread (arg=0x7ff69fdc
00:58:40.335 #5 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #6 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 7 (Thread 0x7ff6acf15700 (LWP 378)):
00:58:40.335 #0 0x00007ff6ae349644 in ?? () from /lib/x86_
00:58:40.335 #1 0x0000000000c14808 in os_aio_
00:58:40.335 #2 0x0000000000c14bd8 in os_aio_linux_handle (global_seg=0, message1=
00:58:40.335 #3 0x0000000000dd2144 in fil_aio_wait (segment=0) at /mnt/workspace/
00:58:40.335 #4 0x0000000000cdeead in io_handler_thread (arg=0x186de80) at /mnt/workspace/
00:58:40.335 #5 0x00007ff6adaeee9a in start_thread (arg=0x7ff6acf1
00:58:40.335 #6 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.335 #7 0x0000000000000000 in ?? ()
00:58:40.335
00:58:40.335 Thread 6 (Thread 0x7ff6a05c9700 (LWP 420)):
00:58:40.335 #0 pthread_
00:58:40.336 #1 0x0000000000c16dd0 in os_cond_wait_timed (cond=0x2e8f490, fast_mutex=
00:58:40.336 #2 0x0000000000c1762d in os_event_
00:58:40.336 #3 0x0000000000beecd8 in lock_wait_
00:58:40.336 #4 0x00007ff6adaeee9a in start_thread (arg=0x7ff6a05c
00:58:40.336 #5 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.336 #6 0x0000000000000000 in ?? ()
00:58:40.336
00:58:40.336 Thread 5 (Thread 0x7ff6a19d2700 (LWP 383)):
00:58:40.336 #0 0x00007ff6ae349644 in ?? () from /lib/x86_
00:58:40.336 #1 0x0000000000c14808 in os_aio_
00:58:40.336 #2 0x0000000000c14bd8 in os_aio_linux_handle (global_seg=5, message1=
00:58:40.336 #3 0x0000000000dd2144 in fil_aio_wait (segment=5) at /mnt/workspace/
00:58:40.336 #4 0x0000000000cdeead in io_handler_thread (arg=0x186dea8) at /mnt/workspace/
00:58:40.336 #5 0x00007ff6adaeee9a in start_thread (arg=0x7ff6a19d
00:58:40.336 #6 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.336 #7 0x0000000000000000 in ?? ()
00:58:40.336
00:58:40.336 Thread 4 (Thread 0x7ff6a39d6700 (LWP 379)):
00:58:40.336 #0 0x00007ff6ae349644 in ?? () from /lib/x86_
00:58:40.336 #1 0x0000000000c14808 in os_aio_
00:58:40.336 #2 0x0000000000c14bd8 in os_aio_linux_handle (global_seg=1, message1=
00:58:40.336 #3 0x0000000000dd2144 in fil_aio_wait (segment=1) at /mnt/workspace/
00:58:40.336 #4 0x0000000000cdeead in io_handler_thread (arg=0x186de88) at /mnt/workspace/
00:58:40.336 #5 0x00007ff6adaeee9a in start_thread (arg=0x7ff6a39d
00:58:40.336 #6 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.336 #7 0x0000000000000000 in ?? ()
00:58:40.336
00:58:40.336 Thread 3 (Thread 0x7ff6a29d4700 (LWP 381)):
00:58:40.336 #0 0x00007ff6ae349644 in ?? () from /lib/x86_
00:58:40.336 #1 0x0000000000c14808 in os_aio_
00:58:40.336 #2 0x0000000000c14bd8 in os_aio_linux_handle (global_seg=3, message1=
00:58:40.336 #3 0x0000000000dd2144 in fil_aio_wait (segment=3) at /mnt/workspace/
00:58:40.336 #4 0x0000000000cdeead in io_handler_thread (arg=0x186de98) at /mnt/workspace/
00:58:40.336 #5 0x00007ff6adaeee9a in start_thread (arg=0x7ff6a29d
00:58:40.336 #6 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.336 #7 0x0000000000000000 in ?? ()
00:58:40.336
00:58:40.336 Thread 2 (Thread 0x7ff6a31d5700 (LWP 380)):
00:58:40.336 #0 0x00007ff6ae349644 in ?? () from /lib/x86_
00:58:40.336 #1 0x0000000000c14808 in os_aio_
00:58:40.336 #2 0x0000000000c14bd8 in os_aio_linux_handle (global_seg=2, message1=
00:58:40.336 #3 0x0000000000dd2144 in fil_aio_wait (segment=2) at /mnt/workspace/
00:58:40.336 #4 0x0000000000cdeead in io_handler_thread (arg=0x186de90) at /mnt/workspace/
00:58:40.336 #5 0x00007ff6adaeee9a in start_thread (arg=0x7ff6a31d
00:58:40.336 #6 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.336 #7 0x0000000000000000 in ?? ()
00:58:40.336
00:58:40.336 Thread 1 (Thread 0x7ff68ffff700 (LWP 434)):
00:58:40.336 #0 __pthread_kill (threadid=
00:58:40.336 #1 0x0000000000aa8c2c in my_write_core (sig=6) at /mnt/workspace/
00:58:40.336 #2 0x00000000007285b9 in handle_fatal_signal (sig=6) at /mnt/workspace/
00:58:40.336 #3 <signal handler called>
00:58:40.336 #4 0x00007ff6acf4c425 in __GI_raise (sig=<optimized out>) at ../nptl/
00:58:40.336 #5 0x00007ff6acf4fb8b in __GI_abort () at abort.c:91
00:58:40.336 #6 0x0000000000aad715 in safe_mutex_destroy (mp=0x2f77ca0, file=0xf1b180 "/mnt/workspace
00:58:40.336 #7 0x0000000000788442 in inline_
00:58:40.336 #8 0x000000000078c90b in THD::~THD (this=0x2f76c80, __in_chrg=
00:58:40.336 #9 0x000000000078cd5a in THD::~THD (this=0x2f76c80, __in_chrg=
00:58:40.336 #10 0x0000000000620226 in one_thread_
00:58:40.336 #11 0x000000000079b9a5 in do_handle_
00:58:40.336 #12 0x000000000079b2f3 in handle_
00:58:40.336 #13 0x0000000000b02e5c in pfs_spawn_thread (arg=0x2eed5d0) at /mnt/workspace/
00:58:40.336 #14 0x00007ff6adaeee9a in start_thread (arg=0x7ff68fff
00:58:40.336 #15 0x00007ff6ad009ccd in clone () at ../sysdeps/
00:58:40.336 #16 0x0000000000000000 in ?? ()
00:58:40.336
00:58:42.376 Compressed file /mnt/workspace/
The mutex is being destroyed at THD::~THD():
THD::~THD() mutex_assert_ not_owner( &LOCK_thread_ count); mutex_destroy( &LOCK_thd_ data);
{
mysql_
...
mysql_
...
The mutex is being held at thd_kill():
extern "C" mutex_lock( &LOCK_thread_ count); thread_ list_begin( ); thread_ list_end( ); mutex_lock( &tmp->LOCK_ thd_data) ; mutex_unlock( &LOCK_thread_ count); >awake( THD::KILL_ CONNECTION) ; mutex_unlock( &tmp->LOCK_ thd_data) ; mutex_unlock( &LOCK_thread_ count);
void thd_kill(ulong id)
{
THD *tmp= NULL;
mysql_
Thread_iterator it= global_
Thread_iterator it_end= global_
while (it != it_end)
{
tmp= *it;
if (tmp->get_command() == COM_DAEMON)
continue;
if (tmp->thread_id == id)
{
mysql_
mysql_
tmp-
mysql_
break;
}
it++;
}
if (it == it_end)
{
mysql_
}
}