[GH-ISSUE #2272] XTCP 出现了invalid memory address or nil pointer dereference #1804

Closed
opened 2026-05-05 13:09:57 -06:00 by gitea-mirror · 1 comment
Owner

Originally created by @iikira on GitHub (Mar 3, 2021).
Original GitHub issue: https://github.com/fatedier/frp/issues/2272

Originally assigned to: @fatedier on GitHub.

错误日志:

2021/03/02 04:16:59 [E] [proxy.go:793] [6f4ed237f1d7dc2d] [esxi_openwrt_msi_windows_openssh] connect to local service [192.168.2.7:22] error: dial tcp 192.168.2.7:22: connect: no route to host
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x85e37f]

goroutine 291652 [running]:
github.com/fatedier/frp/client/proxy.(*XTCPProxy).InWorkConn(0xc00008e400, 0xac3120, 0xc0001d20c0, 0xc0000a90e0)
        github.com/fatedier/frp/client/proxy/proxy.go:312 +0x37f
created by github.com/fatedier/frp/client/proxy.(*Wrapper).InWorkConn
        github.com/fatedier/frp/client/proxy/proxy_wrapper.go:232 +0x248

查询源码发现错误所在
78b8bb7bc6/client/proxy/proxy.go (L312)

	clientConn, err := net.DialUDP("udp", nil, raddr)
	defer clientConn.Close()

	err = msg.WriteMsg(clientConn, natHoleClientMsg)
	if err != nil {
		xl.Error("send natHoleClientMsg to server error: %v", err)
		return
	}

可能的解决办法,将defer语句移到错误处理代码之后

Originally created by @iikira on GitHub (Mar 3, 2021). Original GitHub issue: https://github.com/fatedier/frp/issues/2272 Originally assigned to: @fatedier on GitHub. 错误日志: ```log 2021/03/02 04:16:59 [E] [proxy.go:793] [6f4ed237f1d7dc2d] [esxi_openwrt_msi_windows_openssh] connect to local service [192.168.2.7:22] error: dial tcp 192.168.2.7:22: connect: no route to host panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x85e37f] goroutine 291652 [running]: github.com/fatedier/frp/client/proxy.(*XTCPProxy).InWorkConn(0xc00008e400, 0xac3120, 0xc0001d20c0, 0xc0000a90e0) github.com/fatedier/frp/client/proxy/proxy.go:312 +0x37f created by github.com/fatedier/frp/client/proxy.(*Wrapper).InWorkConn github.com/fatedier/frp/client/proxy/proxy_wrapper.go:232 +0x248 ``` 查询源码发现错误所在 https://github.com/fatedier/frp/blob/78b8bb7bc6936acae2da6de4eddb877a3fd1d910/client/proxy/proxy.go#L312 ```go clientConn, err := net.DialUDP("udp", nil, raddr) defer clientConn.Close() err = msg.WriteMsg(clientConn, natHoleClientMsg) if err != nil { xl.Error("send natHoleClientMsg to server error: %v", err) return } ``` 可能的解决办法,将defer语句移到错误处理代码之后
gitea-mirror 2026-05-05 13:09:57 -06:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@fatedier commented on GitHub (Mar 3, 2021):

@iikira 那边应该漏了一个错误处理,如果 DialUDP error,就但因错误并且 return,你能提一个 PR 修复吗?

<!-- gh-comment-id:789460890 --> @fatedier commented on GitHub (Mar 3, 2021): @iikira 那边应该漏了一个错误处理,如果 DialUDP error,就但因错误并且 return,你能提一个 PR 修复吗?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#1804
No description provided.