goby-lang / goby

Goby - Yet another programming language written in Go
MIT License
3.49k stars 171 forks source link

REPL: class_test.go#265 causes panic #272

Closed hachi8833 closed 7 years ago

hachi8833 commented 7 years ago

class_test.go#265 causes panic on REPL (Works fine on normal execution)

Goby 0.0.9
» module Baz
*   class Bar
*     def bar
*       Foo.new.bar
*     end
*
*     class Foo
*       def bar
*         100
*       end
*     end
*   end
» end
#=>
»
» Baz::Bar.new.bar

runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow

runtime stack:
runtime.throw(0x139cb4b, 0xe)
    /usr/local/opt/go/libexec/src/runtime/panic.go:596 +0x95
runtime.newstack(0x0)
    /usr/local/opt/go/libexec/src/runtime/stack.go:1089 +0x3f2
runtime.morestack()
    /usr/local/opt/go/libexec/src/runtime/asm_amd64.s:398 +0x86

goroutine 1 [running]:
runtime.mallocgc(0x30, 0x137e0e0, 0x1010e01, 0xc48228cd00)
    /usr/local/opt/go/libexec/src/runtime/malloc.go:562 +0xa2f fp=0xc45119e378 sp=0xc45119e370
runtime.newobject(0x137e0e0, 0xc45119e468)
    /usr/local/opt/go/libexec/src/runtime/malloc.go:820 +0x38 fp=0xc45119e3a8 sp=0xc45119e378
runtime.makemap(0x1333ba0, 0x0, 0x0, 0x0, 0xc45119e450)
    /usr/local/opt/go/libexec/src/runtime/hashmap.go:286 +0x2cc fp=0xc45119e400 sp=0xc45119e3a8
github.com/goby-lang/goby/vm.builtinClassClassMethods.func6.1(0xc420089fb0, 0x155da78, 0x0, 0x0, 0x0, 0xc420083d61, 0x3)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/class.go:563 +0x92 fp=0xc45119e488 sp=0xc45119e400
github.com/goby-lang/goby/vm.(*thread).evalBuiltInMethod(0xc420089fb0, 0x15159a0, 0xc4202162a0, 0xc4200f9760, 0xda73b, 0x0, 0xda73c, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:130 +0x202 fp=0xc45119e528 sp=0xc45119e488
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b570, 0xc420150fc0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:363 +0x397 fp=0xc45119e5c0 sp=0xc45119e528
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b570, 0xc420203350)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119e5f8 sp=0xc45119e5c0
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b570)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119e658 sp=0xc45119e5f8
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119e678 sp=0xc45119e658
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a25d0, 0xc420203bf0, 0xda73a, 0x0, 0xda73b, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119e780 sp=0xc45119e678
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b500, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119e818 sp=0xc45119e780
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b500, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119e850 sp=0xc45119e818
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b500)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119e8b0 sp=0xc45119e850
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119e8d0 sp=0xc45119e8b0
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2590, 0xc420203bf0, 0xda739, 0x0, 0xda73a, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119e9d8 sp=0xc45119e8d0
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b490, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119ea70 sp=0xc45119e9d8
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b490, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119eaa8 sp=0xc45119ea70
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b490)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119eb08 sp=0xc45119eaa8
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119eb28 sp=0xc45119eb08
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2550, 0xc420203bf0, 0xda738, 0x0, 0xda739, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119ec30 sp=0xc45119eb28
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b420, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119ecc8 sp=0xc45119ec30
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b420, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119ed00 sp=0xc45119ecc8
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b420)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119ed60 sp=0xc45119ed00
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119ed80 sp=0xc45119ed60
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2510, 0xc420203bf0, 0xda737, 0x0, 0xda738, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119ee88 sp=0xc45119ed80
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b3b0, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119ef20 sp=0xc45119ee88
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b3b0, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119ef58 sp=0xc45119ef20
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b3b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119efb8 sp=0xc45119ef58
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119efd8 sp=0xc45119efb8
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a24d0, 0xc420203bf0, 0xda736, 0x0, 0xda737, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119f0e0 sp=0xc45119efd8
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b340, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119f178 sp=0xc45119f0e0
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b340, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119f1b0 sp=0xc45119f178
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b340)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119f210 sp=0xc45119f1b0
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119f230 sp=0xc45119f210
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2490, 0xc420203bf0, 0xda735, 0x0, 0xda736, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119f338 sp=0xc45119f230
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b2d0, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119f3d0 sp=0xc45119f338
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b2d0, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119f408 sp=0xc45119f3d0
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b2d0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119f468 sp=0xc45119f408
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119f488 sp=0xc45119f468
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2450, 0xc420203bf0, 0xda734, 0x0, 0xda735, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119f590 sp=0xc45119f488
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b260, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119f628 sp=0xc45119f590
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b260, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119f660 sp=0xc45119f628
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b260)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119f6c0 sp=0xc45119f660
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119f6e0 sp=0xc45119f6c0
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2410, 0xc420203bf0, 0xda733, 0x0, 0xda734, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119f7e8 sp=0xc45119f6e0
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b1f0, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119f880 sp=0xc45119f7e8
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b1f0, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119f8b8 sp=0xc45119f880
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b1f0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119f918 sp=0xc45119f8b8
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119f938 sp=0xc45119f918
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a23d0, 0xc420203bf0, 0xda732, 0x0, 0xda733, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119fa40 sp=0xc45119f938
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b180, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119fad8 sp=0xc45119fa40
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b180, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119fb10 sp=0xc45119fad8
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b180)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119fb70 sp=0xc45119fb10
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119fb90 sp=0xc45119fb70
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2390, 0xc420203bf0, 0xda731, 0x0, 0xda732, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119fc98 sp=0xc45119fb90
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b110, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119fd30 sp=0xc45119fc98
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b110, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119fd68 sp=0xc45119fd30
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b110)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc45119fdc8 sp=0xc45119fd68
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc45119fde8 sp=0xc45119fdc8
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2350, 0xc420203bf0, 0xda730, 0x0, 0xda731, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc45119fef0 sp=0xc45119fde8
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b0a0, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc45119ff88 sp=0xc45119fef0
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b0a0, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc45119ffc0 sp=0xc45119ff88
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b0a0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc4511a0020 sp=0xc45119ffc0
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc4511a0040 sp=0xc4511a0020
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2310, 0xc420203bf0, 0xda72f, 0x0, 0xda730, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc4511a0148 sp=0xc4511a0040
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229b030, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc4511a01e0 sp=0xc4511a0148
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229b030, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc4511a0218 sp=0xc4511a01e0
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229b030)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc4511a0278 sp=0xc4511a0218
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc4511a0298 sp=0xc4511a0278
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a22d0, 0xc420203bf0, 0xda72e, 0x0, 0xda72f, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc4511a03a0 sp=0xc4511a0298
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229afc0, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc4511a0438 sp=0xc4511a03a0
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229afc0, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc4511a0470 sp=0xc4511a0438
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229afc0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc4511a04d0 sp=0xc4511a0470
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc4511a04f0 sp=0xc4511a04d0
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2290, 0xc420203bf0, 0xda72d, 0x0, 0xda72e, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc4511a05f8 sp=0xc4511a04f0
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229af50, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc4511a0690 sp=0xc4511a05f8
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229af50, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc4511a06c8 sp=0xc4511a0690
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229af50)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc4511a0728 sp=0xc4511a06c8
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc4511a0748 sp=0xc4511a0728
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2250, 0xc420203bf0, 0xda72c, 0x0, 0xda72d, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc4511a0850 sp=0xc4511a0748
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229aee0, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc4511a08e8 sp=0xc4511a0850
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229aee0, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc4511a0920 sp=0xc4511a08e8
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229aee0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc4511a0980 sp=0xc4511a0920
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc4511a09a0 sp=0xc4511a0980
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2210, 0xc420203bf0, 0xda72b, 0x0, 0xda72c, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc4511a0aa8 sp=0xc4511a09a0
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229ae70, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc4511a0b40 sp=0xc4511a0aa8
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229ae70, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc4511a0b78 sp=0xc4511a0b40
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229ae70)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc4511a0bd8 sp=0xc4511a0b78
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc4511a0bf8 sp=0xc4511a0bd8
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a21d0, 0xc420203bf0, 0xda72a, 0x0, 0xda72b, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc4511a0d00 sp=0xc4511a0bf8
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229ae00, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc4511a0d98 sp=0xc4511a0d00
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229ae00, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc4511a0dd0 sp=0xc4511a0d98
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229ae00)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc4511a0e30 sp=0xc4511a0dd0
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc4511a0e50 sp=0xc4511a0e30
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2190, 0xc420203bf0, 0xda729, 0x0, 0xda72a, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc4511a0f58 sp=0xc4511a0e50
github.com/goby-lang/goby/vm.glob..func21(0xc420089fb0, 0xc48229ad90, 0xc420150fe0, 0x2, 0x2)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/instruction.go:361 +0x2ba fp=0xc4511a0ff0 sp=0xc4511a0f58
github.com/goby-lang/goby/vm.(*thread).execInstruction(0xc420089fb0, 0xc48229ad90, 0xc4202033b0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:75 +0x96 fp=0xc4511a1028 sp=0xc4511a0ff0
github.com/goby-lang/goby/vm.(*thread).evalCallFrame(0xc420089fb0, 0xc48229ad90)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:42 +0x60 fp=0xc4511a1088 sp=0xc4511a1028
github.com/goby-lang/goby/vm.(*thread).startFromTopFrame(0xc420089fb0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:36 +0x55 fp=0xc4511a10a8 sp=0xc4511a1088
github.com/goby-lang/goby/vm.(*thread).evalMethodObject(0xc420089fb0, 0x1515a00, 0xc4822a2150, 0xc420203bf0, 0xda728, 0x0, 0xda729, 0x0)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/goby-lang/goby/vm/thread.go:168 +0x247 fp=0xc4511a11b0 sp=0xc4511a10a8
...additional frames elided...

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
    /usr/local/opt/go/libexec/src/runtime/asm_amd64.s:2197 +0x1

goroutine 35 [syscall]:
os/signal.signal_recv(0x0)
    /usr/local/opt/go/libexec/src/runtime/sigqueue.go:116 +0xff
os/signal.loop()
    /usr/local/opt/go/libexec/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.1
    /usr/local/opt/go/libexec/src/os/signal/signal_unix.go:28 +0x41

goroutine 36 [select]:
github.com/chzyer/readline.(*CancelableStdin).ioloop(0xc420082a80)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/chzyer/readline/std.go:93 +0x247
created by github.com/chzyer/readline.NewCancelableStdin
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/chzyer/readline/std.go:86 +0xf1

goroutine 37 [select]:
github.com/chzyer/readline.(*Terminal).ioloop(0xc4200b6870)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/chzyer/readline/terminal.go:129 +0x270
created by github.com/chzyer/readline.NewTerminal
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/chzyer/readline/terminal.go:38 +0x186

goroutine 38 [select, locked to thread]:
runtime.gopark(0x13acac0, 0x0, 0x139a1bd, 0x6, 0x18, 0x2)
    /usr/local/opt/go/libexec/src/runtime/proc.go:271 +0x13a
runtime.selectgoImpl(0xc420049f50, 0x0, 0x18)
    /usr/local/opt/go/libexec/src/runtime/select.go:423 +0x1364
runtime.selectgo(0xc420049f50)
    /usr/local/opt/go/libexec/src/runtime/select.go:238 +0x1c
runtime.ensureSigM.func1()
    /usr/local/opt/go/libexec/src/runtime/signal_unix.go:434 +0x265
runtime.goexit()
    /usr/local/opt/go/libexec/src/runtime/asm_amd64.s:2197 +0x1

goroutine 39 [chan receive]:
github.com/chzyer/readline.DefaultOnWidthChanged.func1.1(0xc420082d80)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/chzyer/readline/utils_unix.go:75 +0x53
created by github.com/chzyer/readline.DefaultOnWidthChanged.func1
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/chzyer/readline/utils_unix.go:81 +0xbc

goroutine 40 [chan receive]:
github.com/chzyer/readline.(*Operation).ioloop(0xc420082d20)
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/chzyer/readline/operation.go:102 +0x61
created by github.com/chzyer/readline.NewOperation
    /Users/hachi8833/deve/golang/gopath/sys/src/github.com/chzyer/readline/operation.go:86 +0x3b7
st0012 commented 7 years ago

@hachi8833 do you want to give it a try first? I think it's related to the difference between normal and REPL execution environment, the call frame part

hachi8833 commented 7 years ago

I'd be glad if you look into it first: looks pretty hard to me for now 🙇 Now I'm checking the possibility of auto-completion in REPL.

st0012 commented 7 years ago

https://github.com/goby-lang/goby/blob/master/vm/evaluation_test.go#L522 This would also fail

st0012 commented 7 years ago

@hachi8833 https://github.com/goby-lang/goby/commit/29e65ebc6f29e770eb09c4e662668075c2177432 should fix this issue. The explanation is written in commit message.

hachi8833 commented 7 years ago

Checked all test codes in evaluation_test.go with REPL and works fine. Amazing work! I close the issue.