tom--bo / mysqlredo

Other
12 stars 2 forks source link

Update fil0fil.cc #10

Closed nikezono closed 2 months ago

nikezono commented 2 months ago

Problem

mysqlredo raises SIGABRT when it parses a log with MLOG_FILE_DELETE type, as follows.

libc.so.6!raise (Unknown Source:0)
libc.so.6!abort (Unknown Source:0)
libstdc++.so.6!__gnu_cxx::__verbose_terminate_handler() (Unknown Source:0)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libstdc++.so.6!std::terminate() (Unknown Source:0)
libstdc++.so.6!__cxa_throw (Unknown Source:0)
std::__throw_out_of_range_fmt(char const*, ...) [clone .cold] (Unknown Source:0)
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&, unsigned long, std::allocator<char> const&) (Unknown Source:0)
fil_tablespace_redo_delete(byte * ptr, const byte * end, const page_id_t & page_id, ulint parsed_bytes, bool parse_only) (/home/shnakazo/mysqlredo/storage/innobase/fil/fil0fil.cc:10552)
recv_parse_or_apply_log_rec_body(mlog_id_t type, byte * ptr, byte * end_ptr, space_id_t space_id, page_no_t page_no, buf_block_t * block, mtr_t * mtr, ulint parsed_bytes, lsn_t start_lsn) (/home/shnakazo/mysqlredo/client/mylog0recv.cpp:86)
recv_parse_log_rec(mlog_id_t * type, byte * ptr, byte * end_ptr, space_id_t * space_id, page_no_t * page_no, byte ** body) (/home/shnakazo/mysqlredo/client/mylog0recv.cpp:1474)
recv_single_rec(byte * ptr, byte * end_ptr) (/home/shnakazo/mysqlredo/client/mylog0recv.cpp:1543)
recv_parse_log_recs() (/home/shnakazo/mysqlredo/client/mylog0recv.cpp:1801)
my_recv_scan_log_recs(const byte * buf, size_t len, lsn_t start_lsn) (/home/shnakazo/mysqlredo/client/mylog0recv.cpp:2068)
my_parse_begin(byte * buf, const lsn_t checkpoint_lsn, lsn_t end_lsn, uint64_t first_block_offset) (/home/shnakazo/mysqlredo/client/mylog0recv.cpp:2108)
main(int argc, char ** argv) (/home/shnakazo/mysqlredo/client/mysqlredo.cc:222)

It caused by using undefined pointer variable. Maybe typo of s/fname/name/.

tom--bo commented 2 months ago

That's right, thank you very much.