问题标签 [crash]

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 投票
4 回答
874 浏览

.net - 与 oracle 通信时应用程序崩溃,除非可执行路径包含空格

我们的 .NET 应用程序存在 x 文件问题。或者,更确切地说,混合 Win32 和 .NET 应用程序。

当它试图与 Oracle 通信时,它就死了。消失。向着天空中的黑色大虚空而去。没有事件日志消息,没有异常,没有任何东西。

如果我们只是要求应用程序与 MS SQL Server 对话,其效果是将 OracleConnection 和相关类的使用替换为 SqlConnection 和相关类,它会按预期工作。

今天我们取得了突破。

出于某种原因,一位客户发现通过将所有应用程序文件放在他桌面上的一个目录中,Oracle 也可以正常工作。将目录向下移动到驱动器的根目录,或者在 C:\Temp 或者,好吧,大约一点,使崩溃再次出现。

基本上,如果从桌面目录运行,应用程序可以 100% 重现,如果从根目录运行,应用程序会失败。

今天我们发现重要的区别在于目录名称中是否有空格。

因此,这些目录将起作用:

而这些不会:

我希望读到这篇文章的人看到过类似的行为并且有“啊哈,你需要在 oracle glitz 驱动程序配置上调整 frob”或类似的东西。

任何人?


跟进#1:好的,我现在已经处理了 procmon 输出,这两个文件都是从我点击按钮尝试打开触发级联故障的窗口时开始的,我注意到它们大部分都在跟踪,有一些小的差异靠近两个文件的顶部,并且它们跟踪很长的路要走。

但是,当一个运行失败时,另一个会继续运行,日志输出的下几行如下:

在此之后,工作运行继续执行,另一个在线程关闭和应用程序关闭之前触摸 mscorwks.dll 文件几次。因此,失败的运行不会触及上述文件。


跟进#2:我想我会尝试升级 oracle 客户端驱动程序,但 10.2.0.1 显然是 Windows 2003 服务器和 XP 客户端可用的最高版本。


跟进#3:嗯,我们最终得到了一个黑盒解决方案。基本上我们发现问题与XPO和 Oracle 有关。XPO 有一个它管理的系统表,称为 XPObjectType,它包含三列:Oid、TypeName 和 AssemblyName。由于 Oracle 在我们与之交谈的数据库中的配置方式,列名是 OID、TYPENAME 和 ASSEMBLYNAME。这通常不会成为问题,除了 XPO 直接与架构信息对话并检查表是否具有正确的列名,并且 XPO 不处理大小写差异,因此它会看到一个 XPObjectType 表,其中包含三个未知列并且没有它期望的那些。

XPO 现在究竟做了什么我真的不知道,但是如果我删除了这个表,并用正确的大小写重新创建它,在所有列名周围使用双引号来正确区分大小写,问题就不会出现。

文件夹名称中的空格到底是从哪里来的,我仍然不知道,但这个问题有两个层次:

  1. 阻止应用程序在我们的客户处崩溃,短期解决方案
  2. 修复bug,长期解决方案

现在第 1 层已解决,第 2 层将暂时放回队列并优先处理。无论如何,我们的数据层都面临着一些更大的变化,所以这可能不是我们需要解决的问题,至少如果我们所有的 Oracle 客户都验证表修复确实解决了问题的话。

我会接受Dave Markle的回答,因为尽管 Process Monitor(文件监视器的老大哥)实际上并没有查明问题,但我能够使用它来确定在 XPO 建立的用户代码中的断点之后对该表的查询,直到应用程序关闭的所有条目都被记录后才发生 I/O,这让我相信这张表是罪魁祸首,或者至少以某种方式影响了问题。

如果我设法找到真正的原因,我会更新帖子。

0 投票
4 回答
22646 浏览

c - 等效于 Mac/Linux 崩溃的 Windows getch()

我正在使用getch(),我的应用程序立即崩溃。包括在做的时候:

我找不到链接,但据说问题是它需要关闭缓冲或沿着这些线奇怪的东西,我仍然想cout使用跨平台代码。

我被告知要使用std::cin.get(),但我希望应用程序在按下某个键时退出,而不是在用户输入字母或数字然后按 Enter 退出时退出。

这有什么功能吗?代码必须在 Mac(我的操作系统)和 Windows 下工作。


链接/编译不是问题;我在 XCode 中包含<curses.h>并链接 with ,而 Windows 使用.-lcurses<conio.h>

0 投票
5 回答
1214 浏览

c# - 如何调试消失的应用程序

在 Windows 2003 服务器上,我有一个纯 .NET 3.5C#应用程序(没有非托管代码)。它通过套接字连接到各种其他远程系统,并充当数据中心。它可以正常运行 10-15 小时,没有问题,但有时它会消失。如果我使用任务管理器观看应用程序,内存使用量保持不变。

在该Main()函数中,我将应用程序其余部分的调用包装在一个try .. catch块中,它刚刚完全过去 - 将异常记录到文件的 catch 块被忽略。如果我手动引发测试异常,则会调用 catch 块。

在进入之前try .. catch我做:

DRWTSN32.EXE系统上有 Watson 博士,但在指向的目录中没有写入任何内容。

我怎样才能捕捉到导致这种情况的任何异常?

0 投票
6 回答
15224 浏览

c++ - 什么可能导致 dynamic_cast 崩溃?

我有一段看起来像这样的代码:

有时它会崩溃:

我不知道它为什么会崩溃。obj不为空(如果是的话,它不会是一个问题,不是吗?)。

动态演员崩溃的原因可能是什么?

如果它不能转换,它应该只返回 NULL no 吗?

0 投票
1 回答
2518 浏览

python - Pycurl WRITEDATA WRITEFUNCTION 碰撞/崩溃

如何关闭 WRITEFUNCTION 和 WRITEDATA?

使用 pycurl 我有一个类调用 curlUtil。在其中我有 pageAsString (self, URL) ,它返回一个字符串。

为此,我设置了 WRITEFUNCTION。现在在 downloadFile (self, URL, fn, overwrite=0) 我做了一个 open 和 self.c.Setopt (pycurl.WRITEFUNCTION, 0) 这会导致问题。Int 不是一个有效的参数。

然后我假设 WRITEDATA 会覆盖该值,否则会有一个 NOWRITEFUNCTION 推荐。NOWRITEFUNCTION 不存在,所以我只使用了 WRITEDATA 并且 Python 崩溃了。

我编写了一个名为 reboot() 的快速函数,它关闭 curl,再次打开它,然后调用 reset 将其置于默认状态。我在 pageAsString 和 downloadFile 中都调用它,完全没有问题。但是,我不想重新初始化 curl。我可能设置了一些特殊选项。

如何关闭 WRITEFUNCTION 和 WRITEDATA?

0 投票
1 回答
1167 浏览

vb6 - VB6:Capicom 在 WinXP 上崩溃

有关解决此崩溃的任何建议?

下面的代码在 logging<part>14和 logging之间间歇性地崩溃<part>15Plaintext是一个路径字符串(在这种情况下它是"C:\Documents and Settings\Brian\Desktop\Joy\",尽管明显缺乏这种快乐。我有一种下沉的感觉,这是某种邪恶记忆问题的症状。我尝试了 Capicom 2.1.0.1 和 2.1.0.2,两者其中崩溃。后者给出一个标准的错误报告消息,前者无声无息地死掉(即程序自行关闭)。我在别人的 XP 机器上测试了同样的问题,尽管它在 Vista 上运行良好。

编辑:这不是导致问题的数据。我一直在手动传递数据来测试这个;它工作正常。令人讨厌的是,当我将测试代码放入初始化时,该错误就消失了。邪恶的 heisenbug :( 。可能是内存问题 :(

编辑2:重写和这里的东西,然后关闭。与这个问题本身并不完全相同,但这个问题是基于对问题的严重误解。

0 投票
3 回答
13992 浏览

visual-studio-2008 - Visual Studio 2008 崩溃日志在哪里?

我安装了带有 SP1 的 Visual Studio 2008,当我在 Moq 框架中使用 lambda 表达式时它崩溃了。

起初我以为问题是 Resharper ......但现在我已经卸载了它,VS 2008 仍然崩溃。我每次都能复制这个问题。

我在想可能是其他一些插件导致了这个问题,而不是 VS 2008 ......但我不能确定。

那么我想要找到的是 Visual Studio 在哪里记录发生的崩溃?

不幸的是,我无法找到它...有没有人知道它是否存在,如果存在,在哪里看?

提前致谢!

0 投票
4 回答
9833 浏览

java - 我可以强制生成 JVM 崩溃日志文件吗?

来自 JVM 崩溃的日志文件包含各种对调试有用的信息,例如加载的共享库和完整的环境。我可以强制 JVM 以编程方式生成其中之一吗?通过执行使其崩溃的代码或其他方式?或者以另一种方式访问​​相同的信息?

0 投票
1 回答
1944 浏览

vb6 - VB6 程序崩溃:第 2 部分。有关修复访问冲突 (0xC00000005) 的建议

这个问题有关。有关解决以下问题的任何建议?

在对该程序进行了大量实验后,我发现了几件事。

  1. 在运行代码行时,它相对一致地崩溃(大约 90% 的时间)Set Message = New CAPICOM.EncryptedData,. 请注意,这上面的行仅仅是Dim Message As CAPICOM.EncryptedData.

  2. 在程序执行的早期调用时,进行该调用的函数不会崩溃。对错误的二进制搜索无法找到问题,因为在某些地方神秘地调用该函数,不可靠地阻止了错误的发生。如果出现错误,有时重建程序似乎会产生影响。是的,它是一只海森虫。同样的问题也适用于错误的时间二分搜索。花了 5 个小时比较程序的两个版本,却发现两个版本都有错误,即使其中只有一个版本目前显示症状不是很有效。

  3. 崩溃是由于访问冲突 0xC00000005

  4. 运行 WinDbg(Windows 调试器)显示只有一行代码读取此内存位置,LoadPicture(szTmpBMP). 它在一个可怕的函数结束时调用,该函数从资源中抓取图片并将其粘贴到临时文件中。我很害怕这个函数,为了测试,我用调用替换它LoadPicture("testcra.bmp"),然后没有为那个位图调用可怕的资源函数。这没有帮助。完全删除对 loadpicture 的调用也无济于事,尽管调试器无法再找到正在读取受影响内存的任何点,并且受影响的内存不再位于同一位置。此测试是在 VM 上完成的,因此调试器不一定能看到某些内存读取。

  5. 一切都在 Vista 上完美运行(我的本地机器和 Vista 虚拟机)。访问冲突只发生在 XP 上。

  6. 我正在使用 VB6 版本 8176、6.0.8169

0 投票
3 回答
843 浏览

memory - Static memory allocation in Vista results in crash?

I'm using Microsoft Visual C++ 2008 Express, and have a pretty annoying problem. It doesn't seem to happen in XP but in Vista I can't find a way around it. Whenever I declare variables non-dynamically, if their combined size exceeds about 30mb, the program will crash immediately at start-up. I know that Vista limits non-Win32 apps to 32mb of memory, but I don't think that's my issue. I'm using the Microsoft compiler, and it happens regardless if it's a win32 console app or a win32 window app. I just declare like...

...or any combination of variables resulting in a similar size anywhere, and that's good-bye-application. Funny thing is, about 25 % of the times it runs even though this error exists. Am I missing some fundamental programming thingy here? Is static allocation obsolete? Am I going to have to redo the entire application to make use of dynamic allocation?