Hi all, The following unexpected fault address errors are occured occasionally. All of them is gcStart relavent, and it works fine when I turn gc off. Feel frustrated and become addicted to runtime.KeepAlive() XD. Please give some clues, thank you!
*1. Make slice* code pReceive := make([]controlcan.CanObj, 2500) error unexpected fault address 0xffffffffffffffff fatal error: fault [signal 0xc0000005 code=0x0 addr=0xffffffffffffffff pc=0x41c65d] goroutine 28 [running]: runtime.throw(0xcc969a, 0x5) /usr/local/go/src/runtime/panic.go:619 +0x88 fp=0xc04275bc38 sp= 0xc04275bc18 pc=0x42d0b8 runtime.sigpanic() /usr/local/go/src/runtime/signal_windows.go:170 +0x13a fp= 0xc04275bc68 sp=0xc04275bc38 pc=0x43fcca runtime.gcMarkRootPrepare() /usr/local/go/src/runtime/mgcmark.go:72 +0x5d fp=0xc04275bc70 sp= 0xc04275bc68 pc=0x41c65d runtime.gcStart(0x0, 0x1, 0x0, 0x0) /usr/local/go/src/runtime/mgc.go:1350 +0x30f fp=0xc04275bca0 sp= 0xc04275bc70 pc=0x419b6f runtime.mallocgc(0x1a000, 0xc54520, 0x1, 0xa10101) /usr/local/go/src/runtime/malloc.go:803 +0x448 fp=0xc04275bd40 sp= 0xc04275bca0 pc=0x411c48 runtime.makeslice(0xc54520, 0x9c4, 0x9c4, 0xc0420162a0, 0x8, 0x8) /usr/local/go/src/runtime/slice.go:61 +0x7e fp=0xc04275bd70 sp= 0xc04275bd40 pc=0x43fffe posam/protocol/usbcan.(*Channel).receive(0xc04213fdc0) /media/sf_GOPATH0/src/posam/protocol/usbcan/usbcan.go:464 +0x4f0 fp= 0xc04275bfd8 sp=0xc04275bd70 pc=0xa108e0 runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc04275bfe0 sp= 0xc04275bfd8 pc=0x457531 created by posam/protocol/usbcan.(*Channel).Start /media/sf_GOPATH0/src/posam/protocol/usbcan/usbcan.go:242 +0x3aa *2. Grow slice* code resultBuilder.WriteString(fmt.Sprintf("%v\n", output)) error unexpected fault address 0xffffffffffffffff fatal error: fault [signal 0xc0000005 code=0x0 addr=0xffffffffffffffff pc=0x46ecdb] goroutine 74 [running]: runtime.throw(0xe057a7, 0x5) /usr/local/go/src/runtime/panic.go:608 +0x79 fp=0xc00038bc38 sp= 0xc00038bc08 pc=0x42eb89 runtime.sigpanic() /usr/local/go/src/runtime/signal_windows.go:207 +0x139 fp= 0xc00038bc68 sp=0xc00038bc38 pc=0x441609 sync.poolCleanup() /usr/local/go/src/sync/pool.go:227 +0x4b fp=0xc00038bcc8 sp= 0xc00038bc68 pc=0x46ecdb runtime.clearpools() /usr/local/go/src/runtime/mgc.go:2123 +0x157 fp=0xc00038bce0 sp= 0xc00038bcc8 pc=0x41d937 runtime.gcStart(0x0, 0x1, 0x0, 0xc000000000) /usr/local/go/src/runtime/mgc.go:1323 +0x229 fp=0xc00038bd10 sp= 0xc00038bce0 pc=0x41bae9 runtime.mallocgc(0x12000, 0x0, 0xc000632000, 0xc000306000) /usr/local/go/src/runtime/malloc.go:996 +0x43f fp=0xc00038bdb0 sp= 0xc00038bd10 pc=0x40d60f runtime.growslice(0xce7360, 0xc0005c6000, 0xdfee, 0xe000, 0xe003, 0xc00062d780, 0x15, 0xe000) /usr/local/go/src/runtime/slice.go:197 +0x220 fp=0xc00038be18 sp= 0xc00038bdb0 pc=0x441be0 strings.(*Builder).WriteString(...) /usr/local/go/src/strings/builder.go:117 main.main.func3.1() /media/sf_GOPATH0/src/posam/gui/gui.go:476 +0x48d fp=0xc00038bfb8 sp =0xc00038be18 pc=0xb4340d posam/util.Go.func1(0xc0002f00c0) /media/sf_GOPATH0/src/posam/util/util.go:40 +0x4a fp=0xc00038bfd8 sp =0xc00038bfb8 pc=0x7a203a runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc00038bfe0 sp= 0xc00038bfd8 pc=0x4590f1 created by posam/util.Go /media/sf_GOPATH0/src/posam/util/util.go:22 +0x46 *3. Make chan* code req := Request{ Responsec: make(chan Response) // <- this line } error unexpected fault address 0xb00000008 fatal error: fault [signal 0xc0000005 code=0x0 addr=0xb00000008 pc=0x46ecdb] goroutine 7970 [running]: runtime.throw(0xe057a7, 0x5) /usr/local/go/src/runtime/panic.go:608 +0x79 fp=0xc00073adb8 sp= 0xc00073ad88 pc=0x42eb89 runtime.sigpanic() /usr/local/go/src/runtime/signal_windows.go:207 +0x139 fp= 0xc00073ade8 sp=0xc00073adb8 pc=0x441609 sync.poolCleanup() /usr/local/go/src/sync/pool.go:227 +0x4b fp=0xc00073ae48 sp= 0xc00073ade8 pc=0x46ecdb runtime.clearpools() /usr/local/go/src/runtime/mgc.go:2123 +0x157 fp=0xc00073ae60 sp= 0xc00073ae48 pc=0x41d937 runtime.gcStart(0x0, 0x1, 0x0, 0x0) /usr/local/go/src/runtime/mgc.go:1323 +0x229 fp=0xc00073ae90 sp= 0xc00073ae60 pc=0x41bae9 runtime.mallocgc(0x60, 0x0, 0x1, 0xd89020) /usr/local/go/src/runtime/malloc.go:996 +0x43f fp=0xc00073af30 sp= 0xc00073ae90 pc=0x40d60f runtime.makechan(0xcd7d20, 0x0, 0xc0002bc230) /usr/local/go/src/runtime/chan.go:93 +0xba fp=0xc00073af70 sp= 0xc00073af30 pc=0x4062fa posam/protocol/usbcan.(*Channel).Transmit(0xc0002bc230, 0x1, 0xc000669d10, 0x8, 0x8, 0x18f6878, 0x0, 0x0, 0x0, 0x18f6878, ...) /media/sf_GOPATH0/src/posam/protocol/usbcan/usbcan.go:424 +0x12f fp= 0xc00073b180 sp=0xc00073af70 pc=0xa2afaf // ... created by posam/util.Go /media/sf_GOPATH0/src/posam/util/util.go:22 +0x46 *4. New object* code variable := &Variable{ Name: name, // <- this line } error unexpected fault address 0x2600000008 fatal error: fault [signal 0xc0000005 code=0x0 addr=0x2600000008 pc=0x46ecdb] goroutine 28408 [running]: runtime.throw(0xe057a7, 0x5) /usr/local/go/src/runtime/panic.go:608 +0x79 fp=0xc0003938b8 sp= 0xc000393888 pc=0x42eb89 runtime.sigpanic() /usr/local/go/src/runtime/signal_windows.go:207 +0x139 fp= 0xc0003938e8 sp=0xc0003938b8 pc=0x441609 sync.poolCleanup() /usr/local/go/src/sync/pool.go:227 +0x4b fp=0xc000393948 sp= 0xc0003938e8 pc=0x46ecdb runtime.clearpools() /usr/local/go/src/runtime/mgc.go:2123 +0x157 fp=0xc000393960 sp= 0xc000393948 pc=0x41d937 runtime.gcStart(0x0, 0x1, 0x0, 0x0) /usr/local/go/src/runtime/mgc.go:1323 +0x229 fp=0xc000393990 sp= 0xc000393960 pc=0x41bae9 runtime.mallocgc(0x30, 0xd6e740, 0x1, 0x2) /usr/local/go/src/runtime/malloc.go:996 +0x43f fp=0xc000393a30 sp= 0xc000393990 pc=0x40d60f runtime.newobject(0xd6e740, 0xc00012f920) /usr/local/go/src/runtime/malloc.go:1032 +0x3f fp=0xc000393a60 sp= 0xc000393a30 pc=0x40ddaf posam/interpreter/vrb.newVariable(0xe0608e, 0x7, 0xe04ba6, 0x1, 0xc000393b00 , 0x40ddaf, 0x30) /media/sf_GOPATH0/src/posam/interpreter/vrb/variable.go:115 +0x38 fp =0xc000393ab0 sp=0xc000393a60 pc=0xb08578 // ... created by posam/interpreter.(*StatementGroup).ExecuteSync /media/sf_GOPATH0/src/posam/interpreter/interpreter.go:489 +0xc1 -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.