diff options
Diffstat (limited to 'chapter25')
| -rw-r--r-- | chapter25/helloWorld.exe.stackdump | 16 | ||||
| -rw-r--r-- | chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java | 4 |
2 files changed, 19 insertions, 1 deletions
diff --git a/chapter25/helloWorld.exe.stackdump b/chapter25/helloWorld.exe.stackdump new file mode 100644 index 00000000..369cf738 --- /dev/null +++ b/chapter25/helloWorld.exe.stackdump @@ -0,0 +1,16 @@ +Exception: STATUS_ACCESS_VIOLATION at rip=001004010BB +rax=0000000100405000 rbx=0000000000000001 rcx=00000001004010D0 +rdx=00000001004010A6 rsi=0000000000000015 rdi=0000000800049E60 +r8 =00000000FFFFC568 r9 =000000010040500C r10=0000000100000000 +r11=00000001004010A6 r12=0000000800051F10 r13=00000000FFFFCC40 +r14=00000000FFFFFFFF r15=00000000FFFFCC79 +rbp=0000000800051EF0 rsp=00000000FFFFCB50 +program=C:\Users\cliffc\Desktop\Simple\chapter25\build\objs\helloWorld.exe, pid 1066, thread main +cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B +Stack trace: +Frame Function Args +00800051EF0 001004010BB (0000000000D, 00000000000, 00000000015, 0010040181E) +00800051EF0 00000000001 (00000000000, 00000000015, 0010040181E, 00000000015) +00800051EF0 0010040500C (00000000015, 0010040181E, 00000000015, 00800049E60) +00800051EF0 0000000000D (00000000015, 0010040181E, 00000000015, 00800049E60) +End of stack trace diff --git a/chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java b/chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java index b27da676..f5b61048 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java @@ -189,8 +189,10 @@ public class LoadNode extends MemOpNode { case EscapeNode esc: if( esc.self()==ptr ) // Proved equal { mem = esc.priv(); break; } + // Mal-formed, dying + if( !(esc.self().in(0) instanceof NewNode) ) + break outer; // Two NewNodes are always unequal - assert esc.self().in(0) instanceof NewNode; if( ptr.in(0) instanceof NewNode ) { mem = esc.pub(); break; } // TODO: Can we prove unequal? |
