Comment 4 for bug 1397306

Revision history for this message
Andrew Garner (muzazzi) wrote :

The critical bug referenced here in bugs.mysql.com/75245 is caused by a NULL dereference originating in new "ib_warn_row_too_big()" code in the InnoDB storage engine (storage/innobase/handler/ha_innodb.cc). This manifests if a table is created that might exceed the maximum row length if fully populated. Details of the limitations in the InnoDB maximum row size are detailed in this Percona blog post:

http://www.percona.com/blog/2011/04/07/innodb-row-size-limitation/

When innodb_strict_mode is enabled, the server refuses to allow such tables to be created. If a table is created with innodb_strict_mode = off (the default), 5.5.41+ now sends the client a warning. However there are certain corner cases where there may not be a valid client (i.e. during innodb recovery) and when the table is loaded InnoDB tries to send warnings on a "NULL" user connection. This causes a null dereference and the server will segfault.

Attached is a patch for 5.5.41 to guard against this case and avoids the crash noted in MySQL bug 75245.