Bug #43171 Assertion failed: thd->transaction.xid_state.xid.is_null()

Submitted: 25 Feb 2009 8:46 Modified: 18 Dec 2009 13:24
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Locking Severity:S2 (Serious)
Version:5.1.32-debug, 5.1.34-debug, 5.1.39-debug, 5.1.41-debug OS:Any
Assigned to: Sergey Vojtovich CPU Architecture:Any
Tags: assert, xid

[25 Feb 2009 8:46] Shane Bester
Description:
Looks like bug #28323 but that should have been fixed already.
During long running multithreaded transaction tests, this crash occurred:

0086EB9A    mysqld.exe!movelink()[hash.c:272]                         
0086EA64    mysqld.exe!my_hash_insert()[hash.c:437]                   
00659858    mysqld.exe!xid_cache_insert()[sql_class.cc:3120]          
006989F6    mysqld.exe!mysql_execute_command()[sql_parse.cc:4580]     
0069C8C7    mysqld.exe!mysql_parse()[sql_parse.cc:5810]               
00690E7E    mysqld.exe!dispatch_command()[sql_parse.cc:1216]          
006904F4    mysqld.exe!do_command()[sql_parse.cc:857]                 
007AEC06    mysqld.exe!handle_one_connection()[sql_connect.cc:1115]   
008813E6    mysqld.exe!pthread_start()[my_winthread.c:85]             
00A02FC1    mysqld.exe!_callthreadstart()[thread.c:293]               
00A02F67    mysqld.exe!_threadstart()[thread.c:277]                   
7D4DFFF1    kernel32.dll!FlsSetValue()                                
Trying to get some variables.                                         
Some pointers may be invalid and cause the dump to abort...           
thd->query at 0DEEB028=xa start 'xid1'                                
thd->thread_id=356                                                    
thd->killed=NOT_KILLED                                                

Crash is on this line:
while ((next_link=old_link->next) != find);           

dereferencing old_link pointer caused:
Access violation reading location 0x04fd5c00

How to repeat:
no easy testcase. will try make one if this happens again.
[25 Feb 2009 8:50] Shane Bester
extra info about the crash. this is not good enough for a testcase yet.

Attachment: bug43171_some_extra_infos.txt (text/plain), 43.13 KiB.

[16 Jun 2009 9:12] Shane Bester
seen again today on 5.1.34 on windows:

00683772    mysqld.exe!my_hash_sort_bin()[ctype-bin.c:309]
0063C1A3    mysqld.exe!calc_hash()[hash.c:45]
0063C315    mysqld.exe!my_hash_rec_mask()[hash.c:171]
0063C6E4    mysqld.exe!my_hash_first()[hash.c:226]
0063C9A9    mysqld.exe!my_hash_search()[hash.c:193]
00531C49    mysqld.exe!xid_cache_search()[sql_class.cc:3104]
00558720    mysqld.exe!mysql_execute_command()[sql_parse.cc:4706]
0055A133    mysqld.exe!mysql_parse()[sql_parse.cc:5906]
0055AC23    mysqld.exe!dispatch_command()[sql_parse.cc:1218]
0055BA27    mysqld.exe!do_command()[sql_parse.cc:861]
005DEC81    mysqld.exe!handle_one_connection()[sql_connect.cc:1115]
00644D1B    mysqld.exe!pthread_start()[my_winthread.c:85]
0072A1A3    mysqld.exe!_callthreadstart()[thread.c:293]
FC9EE900
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...
thd->query at 169F0030=xa commit 'xid1'
[14 Oct 2009 20:05] Shane Bester
Got a testcase for 5.1.39-debug:

Version: '5.1.39-enterprise-gpl-advanced-debug'  socket: ''  port: 3306  MySQL Enterprise Server - Advanced Edition Debug (GPL)
091014 22:05:23 [ERROR] mysqld-debug: Deadlock found when trying to get lock; try restarting transaction
091014 22:05:23 [ERROR] mysqld-debug: Sort aborted
Assertion failed: thd->transaction.xid_state.xid.is_null(), file .\sql_parse.cc, line 4677

mysqld-debug.exe!my_sigabrt_handler()[mysqld.cc:2029]
mysqld-debug.exe!raise()[winsig.c:597]
mysqld-debug.exe!abort()[abort.c:78]
mysqld-debug.exe!_wassert()[assert.c:212]
mysqld-debug.exe!mysql_execute_command()[sql_parse.cc:4677]
mysqld-debug.exe!mysql_parse()[sql_parse.cc:5935]
mysqld-debug.exe!dispatch_command()[sql_parse.cc:1215]
mysqld-debug.exe!do_command()[sql_parse.cc:854]
mysqld-debug.exe!handle_one_connection()[sql_connect.cc:1127]
mysqld-debug.exe!pthread_start()[my_winthread.c:85]
mysqld-debug.exe!_callthreadstart()[thread.c:295]
mysqld-debug.exe!_threadstart()[thread.c:277]
kernel32.dll!BaseThreadStart()
ariables.
 invalid and cause the dump to abort...
thd->query at 0000000012131A68=xa start 'xid1'

Will upload a .c file.
[14 Oct 2009 20:14] Shane Bester
testcase. run against a debug build.

Attachment: bug43171.c (text/x-csrc), 7.54 KiB.

[14 Oct 2009 20:16] Shane Bester
I guess this is a followup to already fixed bug #44672
[15 Oct 2009 3:50] Valeriy Kravchuk
Verified just as described with recent 5.1.41 from bzr on Mac OS X. I've got the same assertion:

Assertion failed: (thd->transaction.xid_state.xid.is_null()), function unknown function, file sql_parse.cc, line 4709.
091015  6:47:45 - mysqld got signal 6 ;
[28 Oct 2009 15:39] 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/88496

3197 Sergey Vojtovich	2009-10-28
      BUG#43171 - Assertion failed: thd->transaction.xid_state.xid.is_null()
      
      XA START may cause assertion failure/server crash when it is called
      after unilateral roll back issued by the Resource Manager (both
      in regular transaction and after XA transaction).
      
      The problem was that rm_error variable wasn't set/reset properly.
     @ mysql-test/r/xa.result
        A test case for BUG#43171.
     @ mysql-test/t/xa.test
        A test case for BUG#43171.
     @ sql/handler.cc
        Setting rm_error when we're out of XA transaction has no
        special meaning. But it blocks reset of thd->transaction.xid
        structure later.
     @ sql/sql_parse.cc
        Reset rm_error before we enter ha_rollback(), so
        thd->transaction.xid strucure is reinitialized.
[31 Oct 2009 10:51] 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/88846

3171 Sergey Vojtovich	2009-10-31 [merge]
      Merge fix for BUG#43171.
[1 Nov 2009 8:55] 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/88873

3660 Sergey Vojtovich	2009-11-01 [merge]
      Merge fix for BUG#43171 mysql-5.1-bugteam => mysql-pe.
[4 Nov 2009 9:25] Bugs System
Pushed into 5.1.41 (revid:joro@sun.com-20091104092152-qz96bzlf2o1japwc) (version source revid:kristofer.pettersson@sun.com-20091103162305-08l4gkeuif2ozsoj) (merge vers: 5.1.41) (pib:13)
[11 Nov 2009 6:51] Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091110093407-rw5g8dys2baqkt67) (version source revid:alik@sun.com-20091109080109-7dxapd5y5pxlu08w) (merge vers: 6.0.14-alpha) (pib:13)
[11 Nov 2009 6:59] Bugs System
Pushed into 5.5.0-beta (revid:alik@sun.com-20091109115615-nuohp02h8mdrz8m2) (version source revid:alik@sun.com-20091105093814-s4fnrbdbbez3zrs3) (merge vers: 5.5.0-beta) (pib:13)
[17 Nov 2009 16:55] Paul DuBois
Noted in 5.1.41, 5.5.0, 6.0.14 changelogs.

XA START could cause an assertion failure or server crash when it is
called after a unilateral rollback issued by the Resource Manager
(both in a regular transaction and after an XA transaction).
[18 Dec 2009 10:27] Bugs System
Pushed into 5.1.41-ndb-7.1.0 (revid:jonas@mysql.com-20091218102229-64tk47xonu3dv6r6) (version source revid:jonas@mysql.com-20091218095730-26gwjidfsdw45dto) (merge vers: 5.1.41-ndb-7.1.0) (pib:15)
[18 Dec 2009 10:43] Bugs System
Pushed into 5.1.41-ndb-6.2.19 (revid:jonas@mysql.com-20091218100224-vtzr0fahhsuhjsmt) (version source revid:jonas@mysql.com-20091217101452-qwzyaig50w74xmye) (merge vers: 5.1.41-ndb-6.2.19) (pib:15)
[18 Dec 2009 10:58] Bugs System
Pushed into 5.1.41-ndb-6.3.31 (revid:jonas@mysql.com-20091218100616-75d9tek96o6ob6k0) (version source revid:jonas@mysql.com-20091217154335-290no45qdins5bwo) (merge vers: 5.1.41-ndb-6.3.31) (pib:15)
[18 Dec 2009 11:13] Bugs System
Pushed into 5.1.41-ndb-7.0.11 (revid:jonas@mysql.com-20091218101303-ga32mrnr15jsa606) (version source revid:jonas@mysql.com-20091218064304-ezreonykd9f4kelk) (merge vers: 5.1.41-ndb-7.0.11) (pib:15)
[18 Dec 2009 13:24] MC Brown
Already noted in earlier changelogs.

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

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