调用延续时图像冻结

时间:2015-06-17 22:14:46

标签: crash pharo continuation

我正在尝试使用此代码(在操场上)测试Pharo中的延续设施:

| cont f |
f:=[
    |i|
    i:=0.
    Continuation currentDo: [ :cc | cont:=cc ].
    i:=i+1.
].
f value. "1"
cont. "a Continuation"

但是,只要我调用保存在cont中的续集(将cont.替换为cont value.),图像就会立即冻结,我必须按atl+.来获得回控制。

VM版本:VM: NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <estebanlm@gmail.com> Jenkins build #14826

Pharo版本:[version] 4.0 #40614

感谢。

编辑:我是傻瓜,没想到这一点......

2 个答案:

答案 0 :(得分:2)

通过一次又一次地重新评估相同的代码,您已经有效地创建了一个无限循环。您可以看到,如果您调试代码并逐步执行它。原始上下文将始终恢复,然后从#currentDo:send后面的第一个表达式开始进行评估。这是完全延续应该做的事情:在执行中保存当前位置并稍后重新启动。

答案 1 :(得分:1)

我没有要测试的Fedora,但是我在Ubuntu中使用这个版本的Pharo尝试了你的代码:

wget -O- get.pharo.org/40+vm | bash
./pharo-ui Pharo.image

并且您的代码似乎正常运行:(

如果此错误仍然存​​在,您是否可以更具体地了解您正在使用的虚拟机的版本?:

./pharo Pharo.image --version

您正在使用的Pharo版本?:

./pharo Pharo.image printVersion

另外,向我们发送crash.dmp文件会有很大帮助。