开发者社区> javenzhen> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

InnoDB: Failing assertion: format != 0

简介: InnoDB: Failing assertion: format != 0
+关注继续查看

1、MySQL版本5.7.19,OS是MAC OSX在删除表空间时,出现如下错误

[root@localhost][(none)]> drop tablespace ts1;
ERROR 2013 (HY000): Lost connection to MySQL server during query

2、查看error.log日志,看样子有点像是BUG

2018-04-09 16:00:21 0x700007f04000  InnoDB: Assertion failure in thread 123145435496448 in file ha_innodb.cc line 20927
InnoDB: Failing assertion: format != 0
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.7/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
08:00:21 UTC - 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.
Attempting to collect some information that could help diagnose the problem.
As this is a crash and something is definitely wrong, the information
collection process might fail.

key_buffer_size=8388608
read_buffer_size=16777216
max_used_connections=1
max_threads=512
thread_count=2
connection_count=1
It is possible that mysqld could use up to 
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 25180932 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x7f86b59eda00
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 = 700007f03e90 thread_stack 0x40000
0   mysqld                              0x000000010385b12a my_print_stacktrace + 58
1   mysqld                              0x00000001037b7e30 handle_fatal_signal + 688
2   libsystem_platform.dylib            0x00007fff7ab81f5a _sigtramp + 26
3   mysqld                              0x0000000104175c4b _ZZN10binary_log4Uuid9to_stringEPKhPcE11byte_to_hex + 78811
4   libsystem_c.dylib                   0x00007fff7a9ac312 abort + 127
5   mysqld                              0x0000000103ab1471 _Z23ut_dbg_assertion_failedPKcS0_m + 161
6   mysqld                              0x0000000103970147 _Z11ib_senderrfP3THD14ib_log_level_tjz + 359
7   mysqld                              0x0000000103982b27 _Z7ib_errfP3THD14ib_log_level_tjPKcz + 199
8   mysqld                              0x0000000103984f9c _ZL25innobase_alter_tablespaceP10handlertonP3THDP19st_alter_tablespace + 1260
9   mysqld                              0x00000001037353e4 _Z22mysql_alter_tablespaceP3THDP19st_alter_tablespace + 228
10  mysqld                              0x00000001036c6920 _Z21mysql_execute_commandP3THDb + 12816
11  mysqld                              0x00000001036c2d28 _Z11mysql_parseP3THDP12Parser_state + 872
12  mysqld                              0x00000001036c1b98 _Z16dispatch_commandP3THDPK8COM_DATA19enum_server_command + 4728
13  mysqld                              0x00000001036c2789 _Z10do_commandP3THD + 505
14  mysqld                              0x000000010379ba44 handle_connection + 436
15  mysqld                              0x0000000103b11756 pfs_spawn_thread + 310
16  libsystem_pthread.dylib             0x00007fff7ab8b6c1 _pthread_body + 340
17  libsystem_pthread.dylib             0x00007fff7ab8b56d _pthread_body + 0
18  libsystem_pthread.dylib             0x00007fff7ab8ac5d thread_start + 13

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7f86b589dc30): drop tablespace ts1
Connection ID (thread ID): 4
Status: NOT_KILLED

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.

3、查看ha_innodb.cc源码的20927行

/******************************************************************//**
Use this when the args are passed to the format string from
errmsg-utf8.txt directly as is.

Push a warning message to the client, it is a wrapper around:

void push_warning_printf(
  THD *thd, Sql_condition::enum_condition_level level,
  uint code, const char *format, ...);
*/
void
ib_senderrf(
/*========*/
  THD*    thd,    /*!< in/out: session */
  ib_log_level_t  level,    /*!< in: warning level */
  ib_uint32_t  code,    /*!< MySQL error code */
  ...)        /*!< Args */
{
  va_list    args;
  char*    str = NULL;
  const char*  format = innobase_get_err_msg(code);

  /* If the caller wants to push a message to the client then
  the caller must pass a valid session handle. */

  ut_a(thd != 0);

  /* The error code must exist in the errmsg-utf8.txt file. */
  ut_a(format != 0);

  va_start(args, code);

#ifdef _WIN32
  int    size = _vscprintf(format, args) + 1;
  if (size > 0) {
    str = static_cast<char*>(malloc(size));
  }
  if (str == NULL) {
    va_end(args);
    return;  /* Watch for Out-Of-Memory */
  }
  str[size - 1] = 0x0;
  vsnprintf(str, size, format, args);
#elif HAVE_VASPRINTF
  int  ret;
  ret = vasprintf(&str, format, args);
  if (ret < 0) {
    va_end(args);
    return;  /* Watch for Out-Of-Memory */
  }
#else
  /* Use a fixed length string. */
  str = static_cast<char*>(malloc(BUFSIZ));
  if (str == NULL) {
    va_end(args);
    return;  /* Watch for Out-Of-Memory */
  }
  my_vsnprintf(str, BUFSIZ, format, args);
#endif /* _WIN32 */

  Sql_condition::enum_severity_level  l;

  l = Sql_condition::SL_NOTE;

  switch (level) {
  case IB_LOG_LEVEL_INFO:
    break;
  case IB_LOG_LEVEL_WARN:
    l = Sql_condition::SL_WARNING;
    break;
  case IB_LOG_LEVEL_ERROR:
    /* We can't use push_warning_printf(), it is a hard error. */
    my_printf_error(code, "%s", MYF(0), str);
    break;
  case IB_LOG_LEVEL_FATAL:
    l = Sql_condition::SEVERITY_END;
    break;
  }

  if (level != IB_LOG_LEVEL_ERROR) {
    push_warning_printf(thd, l, code, "InnoDB: %s", str);
  }

  va_end(args);
  free(str);

  if (level == IB_LOG_LEVEL_FATAL) {
    ut_error;
  }
}

源码只是说传入的参数是不对的,并没有给出具体是为什么会产生这个错误信息,已在官方提交BUG。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Cloud 微服务 API 实战开发并注册到 Eureka| 学习笔记
快速学习 Spring Cloud 微服务 API 实战开发并注册到 Eureka。
16 0
SpringCloud升级之路2020.0.x版-15.UnderTow 订制
SpringCloud升级之路2020.0.x版-15.UnderTow 订制
30 0
SpringCloud升级之路2020.0.x版-44.避免链路信息丢失做的设计(2)
SpringCloud升级之路2020.0.x版-44.避免链路信息丢失做的设计(2)
39 0
springcloud学习笔记:认识微服务,谈资,技术的迭代演变,支付模块为例 体验demo(2)
springcloud学习笔记:认识微服务,谈资,技术的迭代演变,支付模块为例 体验demo(2)
60 0
Ui5 tool debug - ctrl alt shift s
Created by Wang, Jerry, last modified on Mar 03, 2016
52 0
基于Vue的图片浏览img-vuer、vue-picture-preview、vue-preview、swiper和钉钉api
一、img-vuer 一个简单易用的图片浏览组件,支持滑动换图,支持手势缩放,不支持显示当前时第几张和总共多少张 使用说明: 安装 ; npm install img-vuer --save 使用: import gallery from 'img-vuer ' Vue.
4411 0
Alibaba Cloud releases MaxCompute big data platform in the U.S.
Alibaba Group's cloud computing platform, Alibaba Cloud, officially launched its MaxCompute big data platform in the United States.
1891 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载