

It's always very close to %fs:0x28 itself. We need to track where it's stored on stack.

Canary is emitted by the compiler if with -enable-default-ssp configure option which enables this option by default. You don't really need to know much of assembly to find the canary. Canary is a value placed on stack and checked by the compiler to see if anything corrupts canary value. Now the hardest part: we need to find in assembly where canary value was stored and loaded on stack. The interesting part here is the caller of _stack_chk_fail. #3 0x00007fcbdefbd0a2 in _GI_fortify_fail "stack smashing detected") at fortify_fail.c:26 Program terminated with signal SIGABRT, Aborted. Perhaps the problem occurs with a large table size. | Field | Type | Null | Key | Default | Extra | The table I'm trying to index has two fields and 118272519 rows: I found the following post describing a similar-sounding problem, but wasn't able to find any bug reports on the issue: However, the mysql session crashed (log of backtrace\memory map attached in next reply) with "*** stack smashing detected ***: mysql terminated". The repair took 2 days 4 hours, and looks like it succeeded (I don't know how to verify). Repair NO_WRITE_TO_BINLOG table table_tmp QUICK Then I moved the MYD file to correspond to the new table, and then ran:

I created an empty table with identical layout except that it already has an index defined on the field I would like indexed. So instead, I used a method described here: I ran into performance issues when attempting to build an index on a single field of a large table (1.5 TB). I'm running a MySQL server with a data_dir pointing to an NFS mount exported from a NAS device.
