2

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

在此处输入图像描述

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

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

4

1 回答 1

2

伊戈尔,

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

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

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

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

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

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

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

我希望它有所帮助。

问候, 瓦西里

于 2016-06-21T13:06:57.290 回答