标签: stackunderflow

在C中挑起堆栈下溢

我想在C函数中引发堆栈下溢,以测试我系统中的安全措施.我可以使用内联汇编程序来完成此操作.但是C会更便携.但是,我无法想到使用C引发堆栈下溢的方法,因为堆栈内存在这方面由语言安全地处理.

那么,有没有办法使用C激发堆栈下溢(不使用内联汇编程序)?

如注释中所述:堆栈下溢意味着使堆栈指针指向堆栈开头下方的地址(堆栈从低到高的架构"下方").

c stack stackunderflow

26
推荐指数
6
解决办法
6972
查看次数

学习C++:C++中的Stack下溢示例

什么可以是C++中的一个简单示例,在从方法调用调用和返回的情况下导致堆栈下溢.我熟悉调用约定,即thiscall,stdcall和cdecl以及它们清理堆栈的方式.具体来说,编译器自动为我生成的代码是否会不会出现堆栈下溢?

什么情况可以让我陷入堆栈下溢的麻烦?

c++ compiler-construction stackunderflow

16
推荐指数
2
解决办法
1万
查看次数

如何调试运行时堆栈下溢错误?

我真的很难解决我正在获得的堆栈下溢问题.我在运行时得到的回溯是:

VerifyError: Error #1024: Stack underflow occurred.

at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

这种调试特别困难,因为当我在调试模式下运行时根本不会发生这种情况.它只在编译为发布时才会发生.

有没有人有关于如何调试Stack Underflow的任何提示?对Flash的含义有一个清晰的解释吗?

如果有帮助,当我单击其处理程序进行RPC调用的按钮时会发生此错误,该按钮使用URLLoader,AsyncToken,然后调用与AsyncToken关联的AsyncResponder实例集.由于一些服务器端日志记录以及一些日志记录入侵swf,我知道UrlLoader正在成功执行并获取一个crossdomain.xml文件,正确处理它(即:如果我破坏它,我得到一个安全性错误),并且还成功完成"加载"请求(服务器发送数据).下溢似乎发生在Event.COMPLETE侦听/处理过程中(当然,也是由追踪隐含的).

mxmlc used = from flex_sdk_4.5.0.20967

示例播放器(我尝试了几个)= 10.2.153.1


更新:我的具体问题已经解决了...但我现在离开了问题,因为我想知道如何一般地调试这样的问题,而不仅仅是得到我的具体解决方案.

在我的代码中,我有以下应用程序定义:

<s:Application height="100%" width="100%"
                              xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               initialize="InitData();">
Run Code Online (Sandbox Code Playgroud)

请注意,代码已附加到initialize事件中.

InitData()和相关的定义是:

import classes.RpcServerProxy;
public var SP:RpcServerProxy;

public function InitData():void {
    SP = new RpcServerProxy("http://192.168.1.102:1234");
}
Run Code Online (Sandbox Code Playgroud)

当我将InitData()调用切换为onCompletion事件而不是initialize(感谢J_A_X!)时,问题完全消失了.似乎发生的事情是Event.COMPLETE事件处理程序(堆栈跟踪中的onComplete)正在使用全局SP对象.关于发布(vs debug)编译的一些内容必须影响SP变量初始化的启动时间.稍后将处理程序移动到onCompletion事件解决了所有问题.

如上所述,我仍然想知道有哪些技巧/工具可用于调试这样的初始化问题.


更新2:

applicationComplete似乎是一个比creationComplete放置应用程序初始化代码更好的事件.请参阅此博客文章以获取一些解释,以及此视频(大约4:25)由Adobe Tech Evangelist提供的简单"应用程序启动"数据初始化示例.

apache-flex debugging flash actionscript-3 stackunderflow

12
推荐指数
2
解决办法
8477
查看次数

Python unpickling堆下溢

我一直在研究python应用程序,客户端向服务器发送时钟信号,服务器响应音频信号.
我有两个按钮,一个用于启动时钟,另一个用于暂停轨道.

主类

# function I call when I hit the play button
def play(self):
    start_song = [250]
    global IS_FIRST_PLAY
    if IS_FIRST_PLAY:
        IS_FIRST_PLAY = False
        self.startClock()
    if IS_CONNECTED:
        client.sendMessage(start_song)

# here I start the clock and send a constant clock signal to the client
def startClock(self):
    clock = midi.startClock()
    for i in clock:
        if IS_CONNECTED:
            client.sendMessage(i)
    midi.playing = True

# here I pause the track
def pause(self):
    stop_song = [252]
    if IS_CONNECTED:
        client.sendMessage(stop_song)
    midi.sendMidiMessage(stop_song)
    midi.playing = False
    midi.mtClock = [0, …
Run Code Online (Sandbox Code Playgroud)

python debugging pickle stackunderflow

6
推荐指数
1
解决办法
2万
查看次数

什么可能导致Python中的块堆栈下溢?

应用程序上下文

我们正在“仅”使用 WebOb 开发一个实验性 Web 框架。我们正在处理并发请求,这基本上是 WebOb 的一个非常简单的集成。我们在 webfaction.com 上托管我们的应用程序

问题是我们的日志中出现了致命的 Python 错误:

Fatal Python error: XXX block stack underflow
Run Code Online (Sandbox Code Playgroud)

没有其他回溯或信息。它使我们的应用程序崩溃(几分钟后它会自动重新启动)。我们在开发过程中从未遇到过这个问题。

编辑:我已经检查过,我的 python 应用程序内存太高,这可能是一个相关的问题

我尝试过的

问题是,当我尝试交叉引用访问日志时,没有任何内容与该访问时间相对应。

正如我所说,没有有关错误的回溯或信息。

所以,我首先搜索了Python中的块堆栈下溢,我发现了这篇非常有趣的文章:http://tech.blog.aknin.name/2010/07/22/pythons-innards-interpreter-stacks/,它解释了什么块堆栈下溢。

编辑:我还尝试删除所有 .pyc 并重新启动服务器。没有结果

问题

所以,这是我的问题:什么可能导致编译器中的块堆栈下溢?什么“类型”的代码可能会导致这种情况?

python webob python-2.7 web stackunderflow

6
推荐指数
1
解决办法
4167
查看次数