Bug #29610 func_group fails with lost connection

Submitted: 7 Jul 2007 10:22 Modified: 25 Jul 2007 3:17
Reporter: Daniel Fischer Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Tests Severity:S7 (Test Cases)
Version:5.1.20, 5.1 BK OS:Any (hpux,aix,solaris,osx,linux)
Assigned to: Sergey Petrunya CPU Architecture:Any

[7 Jul 2007 10:22] Daniel Fischer
Description:
Test case func_group fails in normal test runs on AIX 5.2, HPUX 11.00, 11.11, 11.23, Solaris Sparc, Linux S390, Mac OS X Tiger PPC:

func_group                     [ fail ]

Errors are (from /PATH/mysqltest-time) :
mysqltest: At line NNN: query 'SELECT a,COUNT(DISTINCT b) AS cnt FROM t1 GROUP BY a HAVING cnt > 50' failed: 2013: Lost connection to MySQL server during query
(the last lines may be the most important ones)
Result from queries before failure can be found in /PATH/mysql-test/var/log/func_group.log

And in embedded tests:
func_group                     [ fail ]

ERROR: mysqltest returned unexpected code 139, it has probably crashed

Or:
func_group                     [ fail ]

ERROR: mysqltest returned unexpected code 138, it has probably crashed

How to repeat:
Build 5.1.20 and run test on mentioned platforms.
[7 Jul 2007 10:30] Daniel Fischer
Additional note: Appears to occur on 64-bit platforms only.
[7 Jul 2007 14:40] Sveta Smirnova
Thank you for the report.

Verified as described.
[11 Jul 2007 9:19] Sergey Petrunya
Ok. managed to repeat. Stack trace:

#0  0x000000010044078c in ptr_compare_1 (compare_length=0xffffffff7d33d494, 
    a=0x1009c9a80, b=0x1009c9a80) at ptr_cmp.c:92
#1  0x0000000100441dd8 in queue_insert (queue=0xffffffff7d33d420, 
    element=0x1009c9a70 "") at queues.c:216
#2  0x00000001002e4d34 in merge_buffers (param=0xffffffff7d33d6e0, 
    from_file=0xffffffff7d33d870, to_file=0x100965ed0, 
    sort_buffer=0x100979a50 "\001\200", lastbuff=0x1009c9a70, Fb=0x1009c9a70, 
    Tb=0x1009c9b60, flag=1) at filesort.cc:1178
#3  0x00000001002e564c in merge_index (param=0xffffffff7d33d6e0, 
    sort_buffer=0x100979a50 "\001\200", buffpek=0x1009c9a70, maxbuffer=5, 
    tempfile=0xffffffff7d33d870, outfile=0x100965ed0) at filesort.cc:1329
#4  0x00000001002e2354 in filesort (thd=0x100949a70, table=0x100966a40, 
    sortorder=0x100963d80, s_length=1, select=0x100963818, 
    max_rows=18446744073709551615, sort_positions=false, 
    examined_rows=0xffffffff7d33dac0) at filesort.cc:275
#5  0x000000010024f580 in create_sort_index (thd=0x100949a70, 
    join=0x100967a60, order=0x100962a48, filesort_limit=18446744073709551615, 
    select_limit=18446744073709551615, is_order_by=true) at sql_select.cc:12905
#6  0x000000010023004c in JOIN::exec (this=0x100967a60) at sql_select.cc:2040
#7  0x0000000100230a7c in mysql_select (thd=0x100949a70, 
    rref_pointer_array=0x10094b5b0, tables=0x1009625e8, wild_num=0, 
    fields=@0x10094b4d0, conds=0x0, og_num=1, order=0x0, group=0x100962a48, 
    having=0x100962be8, proc_param=0x0, select_options=2147764736, 
---Type <return> to continue, or q <return> to quit---
    result=0x100962e20, unit=0x10094afc8, select_lex=0x10094b3c8)
    at sql_select.cc:2273
#8  0x0000000100228b30 in handle_select (thd=0x100949a70, lex=0x10094af28, 
    result=0x100962e20, setup_tables_done_option=0) at sql_select.cc:246
#9  0x00000001001d0858 in execute_sqlcom_select (thd=0x100949a70, 
    all_tables=0x1009625e8) at sql_parse.cc:4493
#10 0x00000001001c7fc8 in mysql_execute_command (thd=0x100949a70)
    at sql_parse.cc:1838
#11 0x00000001001d2b44 in mysql_parse (thd=0x100949a70, 
    inBuf=0x100962060 "SELECT a,COUNT(DISTINCT b) AS cnt FROM t1 GROUP BY a HAVING cnt > 50", length=68, found_semicolon=0xffffffff7d33fc58)
    at sql_parse.cc:5395
[11 Jul 2007 9:20] Sergey Petrunya
#0  0x000000010044078c in ptr_compare_1 (compare_length=0xffffffff7d33d494, 
    a=0x1009c9a80, b=0x1009c9a80) at ptr_cmp.c:92
92        reg3 int length= *compare_length-1;
(gdb) p *compare_length
$2 = 21474836494
(gdb) p/x *compare_length
$3 = 0x50000000e

^^  this seems to be the problem
[11 Jul 2007 11:18] 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/30668

ChangeSet@1.2540, 2007-07-11 15:16:54+04:00, sergefp@mysql.com +1 -0
  BUG#29610: crash in func_group on 64bit platform:
  - make merge_buffers():sort_length have type size_t as this type is 
    expected by, e.g. ptr_compare_1, which will receive pointer to 
    sort_length as comparison parameter.
[20 Jul 2007 23:46] Bugs System
Pushed into 5.1.21-beta
[24 Jul 2007 17:49] Sergey Petrunya
Yes:
On 64-bit platforms, filesort code (i.e. GROUP BY/ORDER BY queries) could cause crash.
[25 Jul 2007 3:17] Paul DuBois
Noted in 5.1.21 changelog.

On 64-bit platforms, the filesort code (for queries with GROUP BY or
ORDER BY) could crash due to an incorrect pointer size.

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

Page generated in 0.043 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.