问题标签 [stack-dump]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
221 浏览

c++ - g++ 优化 -O3 导致奇怪的堆栈转储错误?

首先,我两个月前才开始编程 C/C++(但在 Java 方面有更多经验),所以我对 C/C++ 的经验还很远。我正在写一篇论文,并且正在使用/扩展为之前的研究而编写的其他代码。

现在,这个错误绝对是我遇到过的最奇怪的错误,我花了将近 3 个小时才找到并缩小到我可以重现它的最基本形式。最后,我有这两个文件,代码如下

c.hh:

测试.cc:

我唯一可以取出并且仍然会发生错误的是c.re的初始化,即“c->re = 0.0;”。但是,我把它留在里面是因为即使我删除了代码的下部,如果没有这一行,错误仍然会发生,因为 c.re 还没有被初始化(或者我认为?)。

我发现重现错误所必需的所有其他内容,即

1)for循环。如果 i=1,2,3 的行分开写,不会导致错误。

2)我的极限!例如,如果 i 仅从 0 运行到 2,则不会导致错误。仅在至少 3 次迭代后发生。

3)显式赋值“c->re = (c->re)+”,用“+=”代替“=(c->re)+”不会报错。

4) i "(i==1)?0:1" 的评估和(!)条件检查。使用 if(..) 执行此操作也会导致错误,但如果不使用 i 或不执行条件检查,则不会导致错误。

5) c.re.的输出 即“std::cout << c->re;”。简单地评估 c.re ("c->re;") 不会导致错误。如果只有一个输出而根本没有评估 c.re,它也不会导致错误。通过 "fprintf(stdout, "%d", c->-re);" 做同样的事情 也会导致错误。

同样非常重要的是,只有当我像这样编译代码时才会发生错误:

如果省略“-O3”,它不会导致错误,所以我认为这是代码产生这个对我来说难以理解的错误的真正原因。请注意,使用 -O3 是因为正如我提到的,此代码是为研究编写的,此类函数可能会被调用多达数百万次,因此最好尽可能优化。然而,我只是根据给我的内容改编了这个“约定”,并不真正了解细节以及使用或不使用它的确切结果是什么。

最重要的是,无论何时导致错误,程序都不会运行。意思是,即使我将任何形式的输出放在任何地方,即使在代码的第一行,运行“测试”也会立即导致错误并且不输出任何内容。

最后,我在尝试执行程序“test”时遇到的错误如下:

其中 stackdump 文件包含以下内容:

正如您可能会说的那样,我对这个问题非常迷茫并且不知道发生了什么,因为似乎没有任何编程“逻辑”的原因来解释为什么会发生这种情况。在这个非常简单的代码中我做错了什么吗?无论如何要“解决”这个问题而不必忽略 -O3 优化?或者这可能不那么重要?

我希望我提供了足够的信息,感谢您的帮助!

0 投票
1 回答
290 浏览

c - Stackdump - 编译的 .c 代码

如果我执行以下代码,则会出现此堆栈转储错误消息:

打印后

你能说我,我应该改变什么,让它工作吗?我在 Windows 10 64bit 上使用 Sublime Text 和 cygwin 编译了它。

这是代码:

0 投票
0 回答
1298 浏览

makefile - Make.exe 给我一个 STATUS_ACCESS_VIOLATION

所以,我正在尝试为 3DS 编译一个自制程序,但是当我运行“make”时,我得到了这个:

然后我找到了这些链接:
MinGW Make 导致 StackDumps
https://github.com/msysgit/msysgit/issues/25
https://devkitpro.org/viewtopic.php?f=3&t=2182

但他们也没有帮助,所以我决定创建一个自己的线程。
这是我的堆栈转储:

任何和所有的帮助表示赞赏。

0 投票
1 回答
1302 浏览

sql-server - 由 SSIS 运行时存储过程失败

我在 SSIS 中有一个执行 SQL 步骤,该步骤与以下错误不一致:

[执行 SQL 任务] 错误:执行查询“sp name”失败,出现以下错误:“语句已终止。”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或连接未正确建立。

存储过程会截断一个表,然后使用 tabblock 将数据插入其中。它没有参数化并且不返回记录集。

  • 存储过程在 SSMS 中成功执行。
  • 我在 Visual Studio 中的用户下以调试模式运行 SSIS。
  • 我在这个本地桌面开发框中有系统管理员。
  • 这四个任务中的任何一个都可能失败。
  • 如果容器独立于包的其余部分执行,则它可以工作。
  • 连接字符串是与同一框上的数据库的 ole db 连接。

发生这种情况的流程如下所示,所有四个都调用不同但相似的过程,它们都将数据从同一个表加载到四个不同的目标中:

在此处输入图像描述

其他信息:

  • SQL Server 2016 SP1,开发者版
  • 视窗 8.1

编辑:

存储过程是这样的:

编辑:我有另一个几乎相同的过程 - 除非它针对不同的文件进行导入。它没有问题。文件更小 10GB 与 15GB。

编辑:SQL 错误日志中有一些堆栈转储:

  • 开始堆栈转储:
  • 2017 年 3 月 4 日 17:39:43 spid 11668
    • 位置:AllocPageRef.cpp:2436
  • 表达式:IAM_START_PGID (ext_id, ext_size) == startExtId
  • SPID:77
  • 进程 ID:7836
  • 描述:在错误的 IAM 页面中查找范围
    • 输入缓冲区 70 字节 -
  • 执行 my_sp

是时候运行更多 DBCC 命令了。

0 投票
1 回答
3702 浏览

linux - Linux 核心转储位置和 abrtd 配置

我正在尝试使用 abrtd 配置将 Linux (RHEL6.7) 核心转储位置更改为不同的目录

(通常它会转到位置核心,但根据我的研究,如果启用 abrtd,那将覆盖默认位置。)

abrtd.conf 转储位置如下所示

为什么我的应用程序核心转储不去 /data/kdump/abrt/FQDN 而不是 /var/tmp 位置

我是否缺少任何配置指令?

0 投票
0 回答
809 浏览

c++ - 错误“3 [main] a 8724 cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 a.exe.stackdump”

我正在尝试创建一个哈希映射来存储字符串中的字符。我似乎找不到导致错误“3 [main] a 8724 cygwin_exception::open_stackdumpfile: Dumping stack trace to a.exe.stackdump”的问题。我相信它在 hasher.cpp 中的某个地方,并且与分配值有关,但除此之外,我完全被难住了。任何帮助将非常感激!

我试过注释掉 main.cpp 的某些部分。当我简单地实例化名为“map”的哈希器时,代码就可以工作了。当我尝试初始化或打印时,会抛出错误。

主.cpp:

hasher.cpp:

哈希.h:

我相信所有标题/数据结构都是正确的(定义了一个节点和一个哈希映射,它是一个节点数组,每个节点都有一个 next 指针)。

提前感谢您的帮助!

0 投票
2 回答
53 浏览

c++ - 在 C++ 中为 Pisano Period 编写函数时需要帮助

您好,我是 C++ 新手,我一直在尝试编写一个函数来计算 Pisano 周期的长度。我已经使用了这样一个事实,即一旦再次点击 0 和 1,序列就会开始重复,因此 0 之前的索引号就是 Pisano 周期长度。但是这个(我上面写的那个)显示“将堆栈跟踪转储到 pisano2.exe.stackdump”错误(pisano2.cpp 是文件名)

0 投票
0 回答
62 浏览

c++ - 如何使用 linux backtrace 和 backtrace_symbols API 查找导致分段错误的线程

你好我的开发人员,

我正在尝试从 C++ 程序分析堆栈转储,在这个特定的程序中,我们正在创建信号处理程序,并且在信号处理程序内部我们有类似下面的代码

我能够获得跟踪但无法找到我期望的地址,现在我想知道是否有其他线程可能已经填充了堆栈跟踪缓冲区(因为它是嵌入式设备并且我们的缓冲区大小有限),如果那么我如何识别/过滤堆栈跟踪线程,或者是否有任何选项可以将堆栈跟踪限制为仅捕获分段错误的线程。

注意:我能够从堆栈跟踪中存在的可执行文件中识别 2 个地址,最近的一个是信号处理程序本身的地址,第二个来自另一个线程。

我试图在多线程环境中搜索有关回溯如何工作的资源。on 但找不到太多信息,所以我在这里。

谢谢