Repeatable crash with percona Server 5.5.13-15

Recently I noticed that MySQL was crashing and upon further investigation discovered that a database was upgraded to use Magento 1.6.

Details of the error:

len 232; hex c821d40700000000b1c05895ad7f000030322a6bad7f0000000000000000 000000000000000000000000000000000000030000000000000001000000 000000000000000000000000030000000000000001000000000000000300 000000000000000000000000000000000000000000000000000000000000 ffffffffffffffff00000000000000000100000000000000834451070000 00009d33be07000000000200000000000000010000000000000030322a6b ad7f0000000000000000000060e111770000000002000000000000000000 0000000000009833be07000000001000000000000000; asc ! X 02k DQ 3 02k ` w 3 ;
110906 15:30:55 InnoDB: Assertion failure in thread 140382468241152 in file btr0pcur.c line 242
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.5/en/forcing-innodb-recove ry.html
InnoDB: about forcing recovery.
110906 15:30:55 - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

key_buffer_size=536870912
read_buffer_size=262144
max_used_connections=1
max_threads=200
thread_count=1
connection_count=1
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 987531 K
bytes of memory
Hope that’s ok; if not, decrease some variables in the equation.

Thread pointer: 0x7b27400
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong…
stack_bottom = 0x7fad5726ee48 thread_stack 0x60000
/usr/local/mysql55/bin/mysqld(my_print_stacktrace+0x35)[0x8e 31b6]
/usr/local/mysql55/bin/mysqld(handle_segfault+0x321)[0x55a8d 8]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfc60)[0x7fae19c02c6 0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35)[0x7fae180b0d05 ]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x186)[0x7fae180b4ab6]
/usr/local/mysql55/bin/mysqld[0xa2446c]
/usr/local/mysql55/bin/mysqld[0x9af264]
/usr/local/mysql55/bin/mysqld[0x9b0c62]
/usr/local/mysql55/bin/mysqld[0x971705]
/usr/local/mysql55/bin/mysqld[0x9718dd]
/usr/local/mysql55/bin/mysqld[0x85fdda]
/usr/local/mysql55/bin/mysqld(_ZN26QUICK_GROUP_MIN_MAX_SELEC T11next_prefixEv+0x171)[0x85ffc3]
/usr/local/mysql55/bin/mysqld(_ZN26QUICK_GROUP_MIN_MAX_SELEC T8get_nextEv+0x4d)[0x85f7f3]
/usr/local/mysql55/bin/mysqld[0x8677b9]
/usr/local/mysql55/bin/mysqld[0x64891a]
/usr/local/mysql55/bin/mysqld(_Z10sub_selectP4JOINP13st_join _tableb+0xc1)[0x646d60]
/usr/local/mysql55/bin/mysqld[0x646950]
/usr/local/mysql55/bin/mysqld(_ZN4JOIN4execEv+0x23d5)[0x62fe 91]
/usr/local/mysql55/bin/mysqld(_Z12mysql_selectP3THDPPP4ItemP 10TABLE_LISTjR4ListIS1_ES2_jP8st_orderSB_S2_SB_yP13select_re sultP18st_select_lex_unitP13st_select_lex+0x368)[0x630630]
/usr/local/mysql55/bin/mysqld(_Z13handle_selectP3THDP3LEXP13 select_resultm+0x1e5)[0x62887b]
/usr/local/mysql55/bin/mysqld[0x602ba5]
/usr/local/mysql55/bin/mysqld(_Z21mysql_execute_commandP3THD +0x98a)[0x5fb7d5]
/usr/local/mysql55/bin/mysqld(_Z11mysql_parseP3THDPcjP12Pars er_state+0x340)[0x604fac]
/usr/local/mysql55/bin/mysqld(_Z16dispatch_command19enum_ser ver_commandP3THDPcj+0xaf7)[0x5f87e1]
/usr/local/mysql55/bin/mysqld(_Z10do_commandP3THD+0x2f0)[0x5 f7ad7]
/usr/local/mysql55/bin/mysqld(_Z24do_handle_one_connectionP3 THD+0x1a1)[0x6e16c8]
/usr/local/mysql55/bin/mysqld(handle_one_connection+0x33)[0x 6e1176]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x6d8c)[0x7fae19bf9d8 c]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fae1816304d]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x7bd8ab0): SELECT COUNT(DISTINCT parent_id) FROM catalog_product_relation WHERE (child_id IN(‘17’))
Connection ID (thread ID): 1
Status: NOT_KILLED

Server was compiled from source and I can reproduce on both Ubuntu 11.04 and Centos 5.6. All tables have been checked and are ok.

If I enter the above query the crash happens every time. Have tried the following versions:

Percona-Server-5.5.13-rel20.4
Percona-Server-5.5.14-rel20.5
Percona-Server-5.5.15-rel21.0

Apologies if this is the wrong place to post this.

Have you tried this on a vanilla MySQL 5.5 server?

Not yet, about to do that tonight.