5 messages in com.mysql.lists.bugsmyisamchk core dump and cleanup proce...
FromSent OnAttachments
Martin MOKREJŠ20 Nov 2001 09:28 
Sasha Pachev20 Nov 2001 10:34 
Martin MOKREJŠ20 Nov 2001 10:46 
Martin MOKREJŠ21 Nov 2001 07:01 
Michael Widenius21 Nov 2001 07:07 
Subject:myisamchk core dump and cleanup procedure
From:Martin MOKREJŠ (mmok@natur.cuni.cz)
Date:11/20/2001 09:28:43 AM
List:com.mysql.lists.bugs

Hi,

I think I've posted this to you recently, but am not sure:

[mysql-3.23.44]$ /usr/local/mysql/bin/myisamchk --unpack
/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.MYI - recovering (with sort) MyISAM-table
'/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.MYI' Data records: 2585 /usr/local/mysql/bin/myisamchk: error: Can't create new tempfile:
'/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.TMD' MyISAM-table '/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.MYI'
is not fixed because of errors Try fixing it by using the --safe-recover (-o) or the --force (-f) option [mysql-3.23.44]$ ls -la
/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.*-rw-rw---- 1
mysql mysql 74009800 Nov 17 23:23
/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.MYD -rw-rw---- 1 mysql mysql 1024 Nov 20 20:14
/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.MYI -rw-rw-r-- 1 mysql mysql 158398476 Nov 20 18:12
/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.TMD -rw-rw---- 1 mysql mysql 8744 Nov 15 13:28
/home/mysql/MtuberculosisUpdateFrishmanDoNotDelete/blast_data.frm [mysql-3.23.44]$

The reason is that the blast_data.TMD file already exists. I know that if the program dumps, then it cannot perform the usual cleanup, however next time myisamchk runs it could tell the user that there're some leftover after previous runs. Removing the .TMD file and re-running myisamchk --unpack does:

[....] Found wrong record at 74009213 Found wrong record at 74009293 Found wrong record at 74009417 Found wrong record at 74009503 Found wrong record at 74009590 Found wrong record at 74009647 Couldn't read whole record from 74009753 /usr/local/mysql/bin/myisamchk: warning: Duplicate key for record at 112912560
against record at 0 Segmentation fault (core dumped) [/tmp]$ file ./core ./core: ELF 32-bit LSB core file of 'myisamchk' (signal 11), Intel 80386,
version 1 [/tmp]$ gdb /usr/local/mysql/bin/myisamchk ./core GNU gdb 19991004 Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux"...(no debugging symbols found)... Core was generated by `/usr/local/mysql/bin/myisamchk --unpack
/home/mysql/MtuberculosisUpdateFrishman'. Program terminated with signal 11, Segmentation fault. #0 0x0 in ?? () (gdb) where #0 0x0 in ?? () #1 0x80601fd in ?? () #2 0x805fd65 in ?? () #3 0x8062817 in ?? () #4 0x8061e70 in ?? () #5 0x805e29a in ?? () #6 0x80490e5 in ?? () #7 0x8048209 in ?? () #8 0x807c66b in ?? () (gdb) quit [/tmp]$

How-To-Repeat: I use linux 2.2.19 with mysql-3.23.44-pc-linux-gnu-i686.tar.gz.

Any ideas?