V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Nazz
V2EX  ›  Go 编程语言

百思不得其解, 为什么 113 这行代码会 panic

  •  
  •   Nazz · 229 天前 · 3418 次点击
    这是一个创建于 229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    仅仅是把常量赋值给变量并转化下数据类型, 怎么就空指针 了呢 :(

    github

    https://github.com/lxzan/gws/issues/89

    求各位提供点思路

    第 1 条附言  ·  229 天前

    正常来说空指针异常应该是这样的

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x90 pc=0x63d23d]
    
    goroutine 1 [running]:
    github.com/lxzan/gws.(*Conn).emitError(0x7f08a53757c8?, {0x730100?, 0xc0000aa0d8?})
            C:/msys64/home/lixizan/Open/gws/conn.go:111 +0x3d
    github.com/lxzan/gws.(*Conn).WriteClose(0x0, 0x3e8, {0xc0000a6f27, 0x0, 0x0?})
            C:/msys64/home/lixizan/Open/gws/writer.go:23 +0x111
    main.main()
            C:/msys64/home/lixizan/Open/gws/examples/echo/main.go:12 +0x28
    
    9 条回复    2024-05-09 09:36:22 +08:00
    lance6716
        1
    lance6716  
       229 天前 via Android   ❤️ 1
    栈是 gws.(*Conn).emitError(0x0, {0x1057966e0, 0xc0282fc558})
    说明 receiver 是 nil
    Nazz
        2
    Nazz  
    OP
       229 天前
    @lance6716 但是 113 行没有访问 receiver 啊
    lance6716
        3
    lance6716  
       229 天前 via Android
    @Nazz 那应该是代码版本与栈不匹配
    lance6716
        4
    lance6716  
       229 天前 via Android
    如果是 issue 一楼说的 wc.conn.WriteClose(1000, []byte{}) 的话,猜测是 wc.conn 是 nil
    kingofzihua
        5
    kingofzihua  
       229 天前   ❤️ 1
    github.com/lxzan/gws.(*Conn).emitError(0x0, {0x1057966e0, 0xc0282fc558})

    第一个参数是 0x0 , 是不是 Conn 已经变为 nil 了?
    Nazz
        6
    Nazz  
    OP
       229 天前 via Android
    @lance6716 没碰到过错误的堆栈信息😂
    版本号是 v1.8.3
    Nazz
        7
    Nazz  
    OP
       229 天前 via Android
    @kingofzihua 有可能,我尝试去复现下
    0Z03ry75kWg9m0XS
        8
    0Z03ry75kWg9m0XS  
       229 天前
    看着是 `conn` 没初始化
    wzy44944
        9
    wzy44944  
       229 天前   ❤️ 1
    是调用方代码的问题吧,得看下 WebsocketClient 这个代码怎么实现的,应该是这个 close 之前就把 conn 置 nil 了导致的,估计逻辑上有些同步异步的问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5891 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:53 · PVG 09:53 · LAX 17:53 · JFK 20:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.