Bug #52746 innodb purge thread crashed with table containing prefix indexed blobs
Submitted: 11 Apr 2010 17:47 Modified: 20 Jun 2010 17:34
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB Plugin storage engine Severity:S1 (Critical)
Version:5.1.45 + 1.0.6 plugin, 5.1.47 + 1.0.7 plugin OS:Any
Assigned to: Marko Mäkelä CPU Architecture:Any

[11 Apr 2010 17:47] Shane Bester
Description:
Version: '5.1.45-enterprise-gpl-advanced-debug'  socket: ''  port: 3306  MySQL Enterprise Server - Advanced Edition Debug (GPL)
100411 19:45:32  InnoDB: Assertion failure in thread 3332 in file .\trx\trx0rec.c line 1081
InnoDB: Failing assertion: ignore_prefix || !col->ord_part || dfield_get_len(dfield) >= REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE
InnoDB: We intentionally generate a memory trap.

ha_innodb_plugin.dll!trx_undo_rec_get_partial_row  Line 1081
ha_innodb_plugin.dll!row_purge_parse_undo_rec Line 585
ha_innodb_plugin.dll!row_purge Line 629
ha_innodb_plugin.dll!row_purge_step Line 684
ha_innodb_plugin.dll!que_thr_step Line 1248
ha_innodb_plugin.dll!que_run_threads_low Line 1311
ha_innodb_plugin.dll!que_run_threads Line 1350
ha_innodb_plugin.dll!trx_purge()  Line 1179
ha_innodb_plugin.dll!srv_master_thread Line 2517

How to repeat:
no testcase yet.
[11 Apr 2010 18:09] MySQL Verification Team
start server with --innodb-file-per-table --innodb-file-format=barracuda, import this sql and wait for purge thread to run

Attachment: bug52746.sql.bz2 (application/octet-stream, text), 103.76 KiB.

[11 Apr 2010 18:50] Valeriy Kravchuk
Verified just as described with recent 5.1.47 + plugin 1.0.7 on Mac OS X:

...
100411 21:47:49 InnoDB Plugin 1.0.7 started; log sequence number 231734120
100411 21:47:49 [Note] Event Scheduler: Loaded 0 events
100411 21:47:49 [Note] /Users/openxs/dbs/5.1/libexec/mysqld: ready for connections.
Version: '5.1.47-debug'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
100411 21:47:50  InnoDB: Assertion failure in thread 2960240640 in file trx/trx0rec.c line 1082
InnoDB: Failing assertion: ignore_prefix || !col->ord_part || dfield_get_len(dfield) >= REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
InnoDB: about forcing recovery.
100411 21:47:50 - mysqld got signal 6 ;
...
[13 Apr 2010 12:19] Marko Mäkelä
The assertion fails to account for ROW_FORMAT=DYNAMIC and ROW_FORMAT=COMPRESSED, which can be as small as 2 * BTR_EXTERN_FIELD_REF_SIZE.  I will review the code for similar assertions.
[5 May 2010 15:18] Bugs System
Pushed into 5.1.47 (revid:joro@sun.com-20100505145753-ivlt4hclbrjy8eye) (version source revid:kristofer.pettersson@sun.com-20100503172109-f9hracq5pqsaomb1) (merge vers: 5.1.47) (pib:16)
[10 May 2010 6:13] Marko Mäkelä
Suggested description of this bug for the manual: "A too strict assertion could fail during the purge of delete-marked records in DYNAMIC or COMPRESSED tables that contain column prefix indexes." This was fixed by relaxing the assertion.
[12 May 2010 19:14] Paul DuBois
Noted in 5.1.47 changelog.
[28 May 2010 5:57] Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (version source revid:alik@sun.com-20100512070920-xgpmqeytp0gc183c) (pib:16)
[28 May 2010 6:25] Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100524190941-nuudpx60if25wsvx) (version source revid:alik@sun.com-20100507093037-7cykrx1n73v0tetc) (merge vers: 6.0.14-alpha) (pib:16)
[28 May 2010 6:53] Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100524185725-c8k5q7v60i5nix3t) (version source revid:alexey.kopytov@sun.com-20100507164602-8w09samq3mpvbxbn) (merge vers: 5.5.5-m3) (pib:16)
[30 May 2010 0:05] Paul DuBois
Noted in 5.5.5, 6.0.14 changelogs.
[17 Jun 2010 11:59] Bugs System
Pushed into 5.1.47-ndb-7.0.16 (revid:martin.skold@mysql.com-20100617114014-bva0dy24yyd67697) (version source revid:martin.skold@mysql.com-20100616204905-jxjg342w35ks9vfy) (merge vers: 5.1.47-ndb-7.0.16) (pib:16)
[17 Jun 2010 12:39] Bugs System
Pushed into 5.1.47-ndb-6.2.19 (revid:martin.skold@mysql.com-20100617115448-idrbic6gbki37h1c) (version source revid:martin.skold@mysql.com-20100615090726-jotpykke96le59w5) (merge vers: 5.1.47-ndb-6.2.19) (pib:16)
[17 Jun 2010 13:25] Bugs System
Pushed into 5.1.47-ndb-6.3.35 (revid:martin.skold@mysql.com-20100617114611-61aqbb52j752y116) (version source revid:martin.skold@mysql.com-20100616120453-jh7wr05z1vf7r8pm) (merge vers: 5.1.47-ndb-6.3.35) (pib:16)