gpt4 book ai didi

go - 是否有可能触发 "invalid memory address or nil pointer dereference"的错误?

转载 作者:数据小太阳 更新时间:2023-10-29 03:12:52 25 4
gpt4 key购买 nike

我有一个偶尔会崩溃的应用程序:

panic :运行时错误:无效的内存地址或零指针取消引用[信号 SIGSEGV:分段违规代码=0x1 地址=0x20 pc=0x122e64a]

跟踪一直导致返回语句,该语句返回一个结构和错误。新(“一些用于调试的文本:”+ err.Error())

该结构似乎没有任何可以取消引用指针的内容,但我重构了该函数,因此它使用了按引用传递并且不需要返回该函数;它只返回了 errors.New()。 panic 还是发生了。

我检查了函数并对其进行了更改,因此它只返回错误,没有错误。New() 字符串加上 err.Error()。现在我似乎不能再引起 panic 了……

所以问题是:关于 errors.New() 使用 err.Error() 连接到字符串会导致 return 语句中出现那种类型的 panic 吗?

编辑:添加触发偶尔 panic 的代码片段:

strctStats.intThreadPool80ConnectionCount, err = strconv.ParseInt(strctStats.strThreadPool80ConnectionCount, 10, 64)
if err != nil {
// Exit external application; send the closing sequences
tmPause := time.NewTimer(time.Second * 2)
<-tmPause.C
stdIn.Write([]byte("close\n"))
tmPause = time.NewTimer(time.Second * 2)
<-tmPause.C
stdIn.Write([]byte("quit\n"))
return errors.New("Could not parse integer: " + err.Error())
}

编辑 2:@lmars 请求堆栈跟踪。这是转储到控制台的内容。不确定它有何帮助(除了函数堆栈和错误/调用产生的行号之外,您能否解释它告诉我们的内容?我是处理其中一些跟踪的新手)

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x122e64a]

goroutine 1 [running]:
main.JMXCheck(0xc42012c000, 0x1a, 0xc420018084, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)

/Users/bsilver/go/src/nagios_tomcat_threadinfo/nagios_tomcat_threadinfo.go:590 +0x38ca
main.main()
/Users/bsilver/go/src/nagios_tomcat_threadinfo/nagios_tomcat_threadinfo.go:146 +0x3cc

最佳答案

举个例子

package main

import (
"errors"
)

func f() error {
err := error(nil)
return errors.New("Could not parse integer: " + err.Error())
}

func main() {
f()
}

输出:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x44ecd6]

goroutine 1 [running]:
main.f(0xc420022070, 0xc420022070)
/home/peter/gopath/src/so/error.go:9 +0x26
main.main()
/home/peter/gopath/src/so/error.go:13 +0x22
exit status 2

参见 How to create a Minimal, Complete, and Verifiable example. .

关于go - 是否有可能触发 "invalid memory address or nil pointer dereference"的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46372662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com