panic: runtime error: invalid memory address or nil pointer dereference when closing Forwarder with nil Listener #36

Open
opened 2025-12-10 15:43:11 +00:00 by bagas · 0 comments
Owner

Description

When calling Close() on a Forwarder instance where the Listener has not been initialized (is nil), the application panics with a nil pointer dereference error at line 175 in forwarder.go.

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

goroutine 879 [running]:
tunnel_pls/session/forwarder.(*Forwarder).Close(0xc00014c1c0?)
/src/session/forwarder/forwarder.go:175 +0x29
tunnel_pls/session/lifecycle.(*Lifecycle).Close(0xc0000d05b0)
/src/session/lifecycle/lifecycle.go:94 +0x25
tunnel_pls/session/lifecycle.(*Lifecycle).WaitForRunningStatus(0xc0000d05b0)
/src/session/lifecycle/lifecycle.go:83 +0x2d7
tunnel_pls/session.New.func1()
/src/session/session.go:85 +0xe3
sync.(*Once).doSlow(0xc000150000?, 0xc0000ce680?)
/usr/local/go/src/sync/once.go:78 +0xab
sync.(*Once).Do(...)
/usr/local/go/src/sync/once.go:69
tunnel_pls/session.New(0xc0001f85b8, 0xc0000d0460, 0xc0000d02a0)
/src/session/session.go:80 +0x4b3
tunnel_pls/server.(*Server).handleConnection(0x64c8a5?, {0x7b9498, 0xc0000840f8})
/src/server/handler.go:25 +0x279
created by tunnel_pls/server.(*Server).Start in goroutine 1
/src/server/server.go:55 +0x1a5

Todo:

  • Add a nil check before closing
## Description When calling Close() on a Forwarder instance where the Listener has not been initialized (is nil), the application panics with a nil pointer dereference error at line 175 in forwarder.go. > panic: runtime error: invalid memory address or nil pointer dereference > [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x5c6509] > > goroutine 879 [running]: > tunnel_pls/session/forwarder.(*Forwarder).Close(0xc00014c1c0?) > /src/session/forwarder/forwarder.go:175 +0x29 > tunnel_pls/session/lifecycle.(*Lifecycle).Close(0xc0000d05b0) > /src/session/lifecycle/lifecycle.go:94 +0x25 > tunnel_pls/session/lifecycle.(*Lifecycle).WaitForRunningStatus(0xc0000d05b0) > /src/session/lifecycle/lifecycle.go:83 +0x2d7 > tunnel_pls/session.New.func1() > /src/session/session.go:85 +0xe3 > sync.(*Once).doSlow(0xc000150000?, 0xc0000ce680?) > /usr/local/go/src/sync/once.go:78 +0xab > sync.(*Once).Do(...) > /usr/local/go/src/sync/once.go:69 > tunnel_pls/session.New(0xc0001f85b8, 0xc0000d0460, 0xc0000d02a0) > /src/session/session.go:80 +0x4b3 > tunnel_pls/server.(*Server).handleConnection(0x64c8a5?, {0x7b9498, 0xc0000840f8}) > /src/server/handler.go:25 +0x279 > created by tunnel_pls/server.(*Server).Start in goroutine 1 > /src/server/server.go:55 +0x1a5 ### Todo: - [ ] Add a nil check before closing
bagas self-assigned this 2025-12-10 15:43:23 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bagas/tunnel-please#36
No description provided.