Bug #56120 Assertion `time <= (838*10000 + 59*100 + 59)' failed on negative TIME

Submitted: 19 Aug 2010 14:10 Modified: 3 Oct 2010 1:34
Reporter: Nirbhay Choubey Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S3 (Non-critical)
Version:5.5.6-m3, 5.6.99-m5 OS:Any
Assigned to: Evgeny Potemkin CPU Architecture:Any
Tags: mysql-5.5, mysql-5.5-bugfixing, next-mr, regression

[19 Aug 2010 14:10] Nirbhay Choubey
Description:
builds/source/mysql-5.5/sql/item.cc:7513: virtual String* Item_cache_datetime::val_str(String*): Assertion `time <= (838*10000 + 59*100 + 59)' failed.
100819 17:00:52 - mysqld got signal 6 ;

#0  0xb7842430 in __kernel_vsyscall ()
#0  0xb7842430 in __kernel_vsyscall ()
#1  0xb7822093 in pthread_kill () from /lib/tls/i686/cmov/libpthread.so.0
#2  0x0861ae43 in my_write_core (sig=6) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/mysys/stacktrace.c:328
#3  0x0815fcd6 in handle_segfault (sig=6) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/mysqld.cc:2506
#4  <signal handler called>
#5  0xb7842430 in __kernel_vsyscall ()
#6  0xb756b651 in raise () from /lib/tls/i686/cmov/libc.so.6
#7  0xb756ea82 in abort () from /lib/tls/i686/cmov/libc.so.6
#8  0xb7564718 in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
#9  0x08351696 in Item_cache_datetime::val_str (this=0xaa3c238, str=0xb096115c) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/item.cc:7513
#10 0x083affa0 in Item_sum_hybrid::val_str (this=0xaa3a918, str=0xb096115c) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/item_sum.cc:1941
#11 0x0833eb74 in Item::val_str_ascii (this=0xaa3a918, str=0xb096115c) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/item.cc:232
#12 0x08340e5a in Item::get_time (this=0xaa3a918, ltime=0xb09611e4) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/item.cc:1031
#13 0x0834d5ee in Item::send (this=0xaa3a918, protocol=0xa9ada04, buffer=0xb0961284) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/item.cc:5902
#14 0x0816e32c in Protocol::send_result_set_row (this=0xa9ada04, row_items=0xaa3c11c) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/protocol.cc:866
#15 0x081bee4f in select_send::send_data (this=0xaa3afa8, items=...) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_class.cc:1764
#16 0x08232065 in end_send_group (join=0xaa3afb8, join_tab=0x0, end_of_records=true) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_select.cc:12646
#17 0x0822f584 in do_select (join=0xaa3afb8, fields=0xaa3c11c, table=0x0, procedure=0x0) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_select.cc:11368
#18 0x0821a7d5 in JOIN::exec (this=0xaa3afb8) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_select.cc:2347
#19 0x0821ae5b in mysql_select (thd=0xa9ad668, rref_pointer_array=0xa9aeb58, tables=0xaa3ab98, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, 
    proc_param=0x0, select_options=2147748608, result=0xaa3afa8, unit=0xa9ae634, select_lex=0xa9aea60)
    at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_select.cc:2541
#20 0x082141bc in handle_select (thd=0xa9ad668, lex=0xa9ae5d0, result=0xaa3afa8, setup_tables_done_option=0)
    at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_select.cc:296
#21 0x081f2de5 in execute_sqlcom_select (thd=0xa9ad668, all_tables=0xaa3ab98) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_parse.cc:4874
#22 0x081ea950 in mysql_execute_command (thd=0xa9ad668) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_parse.cc:2308
#23 0x081f4c79 in mysql_parse (thd=0xa9ad668, rawbuf=0xaa3a7f8 "SELECT MAX(c1), MIN(c1) FROM t1", length=31, parser_state=0xb0962af0)
    at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_parse.cc:5903
#24 0x081e81e0 in dispatch_command (command=COM_QUERY, thd=0xa9ad668, packet=0xaa327c9 "", packet_length=31)
    at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_parse.cc:1138
#25 0x081e7614 in do_command (thd=0xa9ad668) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_parse.cc:810
#26 0x082bd7d9 in do_handle_one_connection (thd_arg=0xa9ad668) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_connect.cc:1191
#27 0x082bd68a in handle_one_connection (arg=0xa9ad668) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/sql/sql_connect.cc:1130
#28 0x085e1580 in pfs_spawn_thread (arg=0xaa15420) at /home/nirbhay/Project/mysql/repo/builds/source/mysql-5.5/storage/perfschema/pfs.cc:1015
#29 0xb781c96e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#30 0xb760ea4e in clone () from /lib/tls/i686/cmov/libc.so.6

How to repeat:
USE `test`;
CREATE TABLE `t1`(`c1` TIME NOT NULL);
INSERT INTO t1 VALUES('-0:00:01');
SELECT MAX(c1), MIN(c1) FROM t1;
DROP TABLE t1;
[19 Aug 2010 14:25] MySQL Verification Team
Thank you for the bug report.

100819 11:22:59 InnoDB 1.2.0 started; log sequence number 1612639
100819 11:22:59 [Note] Event Scheduler: Loaded 0 events
100819 11:22:59 [Note] /home/miguel/dbs/5.5/bin/mysqld: ready for connections.
Version: '5.6.99-m4-debug-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
mysqld: /home/miguel/bzr/5.5/sql/item.cc:7514: virtual String* Item_cache_datetime::val_str(String*): Assertion `time < (838*10000 + 59*100 + 59)' failed.
[20 Aug 2010 18:20] 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/116445

3190 Evgeny Potemkin	2010-08-20
      Bug#56120: Failed assertion on MIX/MAX on negative time value
      The Item_cache_datetime::val_str function wasn't taking into account that time
      could be negative. This led to failed assertion.
      Now Item_cache_datetime::val_str correctly converts negative time values
      from integer to string representation.
     @ mysql-test/r/func_group.result
        Added a test case for the bug#56120.
     @ mysql-test/t/func_group.test
        Added a test case for the bug#56120.
     @ sql/item.cc
        Bug#56120: Failed assertion on MIX/MAX on negative time value
        Now Item_cache_datetime::val_str correctly converts negative time values
        from integer to string representation.
[23 Aug 2010 11:39] Nirbhay Choubey
On Windows (Win Server 2007 sp2)the same set of statements produce
different sort of output (and no assertion failure) :

USE `test`;
CREATE TABLE `t1`(`c1` TIME NOT NULL);
INSERT INTO t1 VALUES('-0:00:01');
SELECT MAX(c1), MIN(c1) FROM t1;
MAX(c1)	MIN(c1)
838:59:59	838:59:59       ## Incorrect
Warnings:
Warning	1292	Truncated incorrect time value: '3133608139:16:15'
Warning	1292	Truncated incorrect time value: '3133608139:16:15'
DROP TABLE t1;

IMO, the patch for the above bug should take care of this bug too.
[23 Aug 2010 16:00] 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/116537

3190 Evgeny Potemkin	2010-08-23
      Bug#56120: Failed assertion on MIX/MAX on negative time value
      The Item_cache_datetime::val_str function wasn't taking into account that time
      could be negative. This led to failed assertion.
      Now Item_cache_datetime::val_str correctly converts negative time values
      from integer to string representation.
     @ mysql-test/r/func_group.result
        Added a test case for the bug#56120.
     @ mysql-test/t/func_group.test
        Added a test case for the bug#56120.
     @ sql/item.cc
        Bug#56120: Failed assertion on MIX/MAX on negative time value
        Now Item_cache_datetime::val_str correctly converts negative time values
        from integer to string representation.
[25 Aug 2010 9:24] Bugs System
Pushed into mysql-5.5 5.5.6-m3 (revid:alik@ibmvm-20100825092002-2yvkb3iwu43ycpnm) (version source revid:alik@ibmvm-20100825092002-2yvkb3iwu43ycpnm) (merge vers: 5.5.6-m3) (pib:20)
[25 Aug 2010 12:23] Alexander Nozdrin
It is not pushed actually to mysql-5.5.
It's still queuing in 5.5-bugfixing.
[26 Aug 2010 2:02] Paul DuBois
Back to Patch Queued per Alik's comment.
[30 Aug 2010 8:32] Bugs System
Pushed into mysql-trunk 5.6.1-m4 (revid:alik@sun.com-20100830082732-n2eyijnv86exc5ci) (version source revid:alik@sun.com-20100830082732-n2eyijnv86exc5ci) (merge vers: 5.6.1-m4) (pib:21)
[30 Aug 2010 8:35] Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100830082745-n6sh01wlwh3itasv) (version source revid:alik@sun.com-20100830082745-n6sh01wlwh3itasv) (pib:21)
[30 Aug 2010 8:36] Bugs System
Pushed into mysql-5.5 5.5.7-m3 (revid:alik@sun.com-20100830082727-5ac4czrxl61w9wle) (version source revid:alik@sun.com-20100830082727-5ac4czrxl61w9wle) (merge vers: 5.5.7-m3) (pib:21)
[8 Sep 2010 19:23] Paul DuBois
Noted in 5.5.7, 5.6.1 changelogs.

A negative TIME argument to MIN() or MAX() could raise an assertion.
[10 Sep 2010 18:51] Bugs System
Pushed into mysql-5.5 5.5.7-rc (revid:joerg@mysql.com-20100910184813-csdto6tk4nlogrsq) (version source revid:dlenev@mysql.com-20100831090419-rzr5ktekby2gspm1) (merge vers: 5.5.6-m3) (pib:21)
[13 Sep 2010 13:49] Bugs System
Pushed into mysql-trunk 5.6.1-m4 (revid:dlenev@mysql.com-20100913103627-p2oqplu42x1gv2bd) (version source revid:dlenev@mysql.com-20100831090419-rzr5ktekby2gspm1) (merge vers: 5.5.6-m3) (pib:21)
[13 Sep 2010 13:52] Bugs System
Pushed into mysql-next-mr (revid:dlenev@mysql.com-20100913121556-sfxqlpj9kbc28kaf) (version source revid:dlenev@mysql.com-20100831090419-rzr5ktekby2gspm1) (pib:21)

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.050 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.