Plan 9 from Bell Labs’s /usr/web/sources/contrib/ericvh/go-plan9/test/fixedbugs/bug093.go

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: fails incorrectly

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

type S struct {
}

func (p *S) M() {
	print("M\n");
}

type I interface {
	M();
}

func main() {
	var p *S = nil;
	var i I = p;  // this should be possible even though p is nil: we still know the type
	i.M();  // should be possible since we know the type, and don't ever use the receiver
}


/*
throw: ifaces2i: nil pointer
SIGSEGV: segmentation violation
Faulting address: 0x0
pc: 0x1b7d

0x1b7d?zi
	throw(30409, 0, 0, ...)
	throw(0x76c9, 0x0, 0x0, ...)
0x207f?zi
	sys·ifaces2i(31440, 0, 31480, ...)
	sys·ifaces2i(0x7ad0, 0x7af8, 0x0, ...)
0x136f?zi
	main·main(1, 0, 1606416424, ...)
	main·main(0x1, 0x7fff5fbff828, 0x0, ...)

rax     0x1
rbx     0x1
rcx     0x33b5
rdx     0x0
rdi     0x1
rsi     0x7684
rbp     0x7684
rsp     0xafb8
r8      0x0
r9      0x0
r10     0x1002
r11     0x206
r12     0x0
r13     0x0
r14     0x7c48
r15     0xa000
rip     0x1b7d
rflags  0x10202
cs      0x27
fs      0x10
gs      0x48
*/

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].