调用延续时图像冻结

Image freeze when a continuation is called

我正在尝试使用以下代码(在 playground 中)测试 Pharo 中的延续设施:

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

然而,一旦我调用保存在cont中的continuation(将cont.替换为cont value.),图像立即冻结,我必须按atl+. 重新获得控制权。

虚拟机版本: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

谢谢。

编辑:我是傻子,没有想通...

我没有要测试的 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 文件发送给我们会有很大帮助。

您通过一次又一次地重新计算相同的代码有效地创建了一个无限循环。如果您调试代码并单步执行它,您会看到这一点。原始上下文将始终被恢复,然后从#currentDo: send 之后的第一个表达式开始计算。这正是延续应该做的:保存执行中的当前位置并稍后重新启动。