【问题标题】:IBM Platform LSF Exit code=139IBM 平台 LSF 退出代码 = 139
【发布时间】:2016-06-23 00:35:57
【问题描述】:

我在执行 SAS 批处理命令时遇到了错误。 批处理命令由 IBM Platform LSF 执行。 bhist 命令显示如下:

作业以退出代码 139 退出。根据 LSF 管理员指南,以系统信号终止的作业由 LSF 作为大于 128 的退出代码返回。因此信号代码 =139-128 -> 11 - SIGSEGV。

这段代码是什么意思?如何确定问题的根本原因?昨天的工作没有出错。

【问题讨论】:

  • 在 LSF 之外运行程序时能否重现段错误?

标签: sas batch-processing lsf


【解决方案1】:

伊戈尔,

问题是由您的操作系统或硬件引起的。我会说,如果您再次运行该作业,它很可能会运行良好。

SIGSEGV 是一种内存分段错误,它可能以多种不同方式引起,不一定由您的 SAS 作业引起,但通常是一次性错误。

以下是导致分段错误的一些典型原因:

  • 取消引用空指针 - 这是内存管理硬件的特殊情况
  • 试图访问一个不存在的内存地址(在进程的地址空间之外)
  • 试图访问程序无权访问的内存(例如进程上下文中的内核结构)
  • 试图写入只读内存(如代码段)

这些通常是由导致无效内存访问的编程错误引起的:

  • 取消引用或分配给未初始化的指针(野指针,指向随机内存地址)
  • 取消引用或分配给已释放的指针(悬空指针,指向已释放/解除分配/删除的内存)
  • 缓冲区溢出
  • 堆栈溢出
  • 试图执行编译不正确的程序。 (来源:https://en.wikipedia.org/wiki/Segmentation_fault

如果你想追踪错误,我需要知道你的平台。例如,此错误将在 Windows 管理工具中捕获,您可以在其中找到更多信息。其他平台会以不同的方式捕获此类错误。

我希望它有所帮助。

问候, 瓦西里

【讨论】:

  • 瓦西里,感谢您的回复。但我需要知道原因:“可能以多种不同方式引起的错误” - 这些方式是什么?如何确定?
  • @IgorKhalin 很公平。我已经用可能的原因更新了我的答案。您需要查看您的操作系统日志以查找更多信息。
猜你喜欢
  • 2021-03-07
  • 2022-07-05
  • 2017-01-20
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 2016-02-16
相关资源
最近更新 更多