mihomo icon indicating copy to clipboard operation
mihomo copied to clipboard

[Bug] 更新!鸡场主反馈,不是端口跳跃导致的问题,是tun模式gvisor堆栈导致内核panic (system堆栈无问题)

Open moranno opened this issue 1 year ago • 12 comments

Verify steps

  • [X] 确保你使用的是本仓库最新的的 mihomo 或 mihomo Alpha 版本 Ensure you are using the latest version of Mihomo or Mihomo Alpha from this repository.
  • [X] 如果你可以自己 debug 并解决的话,提交 PR 吧 Is this something you can debug and fix? Send a pull request! Bug fixes and documentation fixes are welcome.
  • [X] 我已经在 Issue Tracker 中找过我要提出的问题 I have searched on the issue tracker for a related issue.
  • [X] 我已经使用 Alpha 分支版本测试过,问题依旧存在 I have tested using the dev branch, and the issue still exists.
  • [X] 我已经仔细看过 Documentation 并无法自行解决问题 I have read the documentation and was unable to solve the issue.
  • [X] 这是 Mihomo 核心的问题,并非我所使用的 Mihomo 衍生版本(如 OpenMihomo、KoolMihomo 等)的特定问题 This is an issue of the Mihomo core per se, not to the derivatives of Mihomo, like OpenMihomo or KoolMihomo.

Mihomo version

1.18.2-d84f88b

What OS are you seeing the problem on?

Windows

Mihomo config

tun:
  mtu: 9000
  stack: gvisor
  device: Meta
  auto-route: true
  strict-route: false
  auto-detect-interface: true
  dns-hijack:
  - any:53
  enable: true
proxies:
 - { name: hk1(hy2), type: hysteria2, server: hk1.server.com, port: 443, ports: 1000-10000, password: 2167f570-ce76-4217-b6a3-5f6ed1b36cf2, skip-cert-verify: true }

Mihomo log

2024-04-17 15:32:12 INFO - [clash]: time="2024-04-17T15:32:12.5600898+08:00" level=warning msg="[TUN] default interface changed by monitor,  => Ethernet"
2024-04-17 15:32:12 ERROR - [clash]: 2024/04/17 15:32:12 http: panic serving 127.0.0.1:56711: runtime error: invalid memory address or nil pointer dereference
2024-04-17 15:32:12 ERROR - [clash]: goroutine 32694 [running]:
2024-04-17 15:32:12 ERROR - [clash]: net/http.(*conn).serve.func1()
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:1898 +0xbe
2024-04-17 15:32:12 ERROR - [clash]: panic({0xee9300?, 0x1b16a30?})
2024-04-17 15:32:12 ERROR - [clash]: 	runtime/panic.go:770 +0x132
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/gvisor/pkg/tcpip/link/channel.(*Endpoint).Attach(0x0, {0x0, 0x0})
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/[email protected]/pkg/tcpip/link/channel/channel.go:209 +0x2d
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/sing-tun.(*Mixed).Close(0xc00920e0c0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/[email protected]/stack_mixed.go:264 +0x27
2024-04-17 15:32:12 ERROR - [clash]: github.com/sagernet/sing/common.Close({0xc005df2348?, 0x1bdcf00?, 0x0?})
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/sagernet/[email protected]/common/cond.go:351 +0x15b
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/listener/sing_tun.(*Listener).Close(0xc0073288c0?)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/listener/sing_tun/server.go:337 +0xef
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/listener/sing_tun.New.func1()
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/listener/sing_tun/server.go:180 +0x29
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/listener/sing_tun.New({0x1, {0xc0072a0b20, 0x4}, 0x2, {0xc00688b500, 0x1, 0x1}, 0x1, 0x1, {0x1bdcf00, ...}, ...}, ...)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/listener/sing_tun/server.go:271 +0x1aee
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/listener.ReCreateTun({0x1, {0xc0072a0b20, 0x4}, 0x2, {0xc00688b500, 0x1, 0x1}, 0x1, 0x1, {0x1bdcf00, ...}, ...}, ...)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/listener/listener.go:534 +0x1af
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/hub/executor.updateTun(0xc00adca508)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/hub/executor/executor.go:356 +0x9e
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/hub/executor.ApplyConfig(0xc005dd4000, 0x0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/hub/executor/executor.go:103 +0x286
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/hub/route.updateConfigs({0x1269ca0, 0xc0069f8460}, 0xc0073be6c0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/hub/route/configs.go:367 +0x28f
2024-04-17 15:32:12 ERROR - [clash]: net/http.HandlerFunc.ServeHTTP(0xc0017be3c0?, {0x1269ca0?, 0xc0069f8460?}, 0x1255370?)
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:2166 +0x29
2024-04-17 15:32:12 ERROR - [clash]: github.com/go-chi/chi/v5.(*Mux).routeHTTP(0xc00021d2c0, {0x1269ca0, 0xc0069f8460}, 0xc0073be6c0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/go-chi/chi/[email protected]/mux.go:459 +0x2e6
2024-04-17 15:32:12 ERROR - [clash]: net/http.HandlerFunc.ServeHTTP(0xc0051f0c30?, {0x1269ca0?, 0xc0069f8460?}, 0x10?)
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:2166 +0x29
2024-04-17 15:32:12 ERROR - [clash]: github.com/go-chi/chi/v5.(*Mux).ServeHTTP(0xc00021d2c0, {0x1269ca0, 0xc0069f8460}, 0xc0073be6c0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/go-chi/chi/[email protected]/mux.go:73 +0x32f
2024-04-17 15:32:12 ERROR - [clash]: github.com/go-chi/chi/v5.(*Mux).Mount.func1({0x1269ca0, 0xc0069f8460}, 0xc0073be6c0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/go-chi/chi/[email protected]/mux.go:327 +0x1bb
2024-04-17 15:32:12 ERROR - [clash]: net/http.HandlerFunc.ServeHTTP(0x2f3424?, {0x1269ca0?, 0xc0069f8460?}, 0xc002a6d8e0?)
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:2166 +0x29
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/hub/route.authentication.func1({0x1269ca0?, 0xc0069f8460?}, 0xc0043d5918?)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/hub/route/server.go:171 +0x293
2024-04-17 15:32:12 ERROR - [clash]: net/http.HandlerFunc.ServeHTTP(0xc000eb9a40?, {0x1269ca0?, 0xc0069f8460?}, 0x0?)
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:2166 +0x29
2024-04-17 15:32:12 ERROR - [clash]: github.com/go-chi/chi/v5.(*ChainHandler).ServeHTTP(0xc0017be3c0?, {0x1269ca0?, 0xc0069f8460?}, 0xc002b6e2bc?)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/go-chi/chi/[email protected]/chain.go:31 +0x26
2024-04-17 15:32:12 ERROR - [clash]: github.com/go-chi/chi/v5.(*Mux).routeHTTP(0xc000106120, {0x1269ca0, 0xc0069f8460}, 0xc0073be6c0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/go-chi/chi/[email protected]/mux.go:459 +0x2e6
2024-04-17 15:32:12 ERROR - [clash]: net/http.HandlerFunc.ServeHTTP(0xc0028880a0?, {0x1269ca0?, 0xc0069f8460?}, 0xc0073be6c0?)
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:2166 +0x29
2024-04-17 15:32:12 ERROR - [clash]: github.com/go-chi/cors.(*Cors).Handler-fm.(*Cors).Handler.func1({0x1269ca0, 0xc0069f8460}, 0xc0073be6c0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/go-chi/[email protected]/cors.go:228 +0x17e
2024-04-17 15:32:12 ERROR - [clash]: net/http.HandlerFunc.ServeHTTP(0x30?, {0x1269ca0?, 0xc0069f8460?}, 0x1f5fb2c8d78?)
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:2166 +0x29
2024-04-17 15:32:12 ERROR - [clash]: github.com/metacubex/mihomo/hub/route.setPrivateNetworkAccess.func1({0x1269ca0, 0xc0069f8460}, 0xc0073be6c0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/metacubex/mihomo/hub/route/server.go:158 +0x1a2
2024-04-17 15:32:12 ERROR - [clash]: net/http.HandlerFunc.ServeHTTP(0x126c810?, {0x1269ca0?, 0xc0069f8460?}, 0x1b19370?)
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:2166 +0x29
2024-04-17 15:32:12 ERROR - [clash]: github.com/go-chi/chi/v5.(*Mux).ServeHTTP(0xc000106120, {0x1269ca0, 0xc0069f8460}, 0xc0073be5a0)
2024-04-17 15:32:12 ERROR - [clash]: 	github.com/go-chi/chi/[email protected]/mux.go:90 +0x2ee
2024-04-17 15:32:12 ERROR - [clash]: net/http.serverHandler.ServeHTTP({0x1263668?}, {0x1269ca0?, 0xc0069f8460?}, 0x6?)
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:3137 +0x8e
2024-04-17 15:32:12 ERROR - [clash]: net/http.(*conn).serve(0xc00727a990, {0x126c7d8, 0xc00298e4b0})
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:2039 +0x5e8
2024-04-17 15:32:12 ERROR - [clash]: created by net/http.(*Server).Serve in goroutine 68
2024-04-17 15:32:12 ERROR - [clash]: 	net/http/server.go:3285 +0x4b4

Description

我这边用户大规模反馈,自从升级到1.18.2-最新版的alpha构建d84f88b),tun模式使用gvisor,平凡出现断流。 同时测试了tun模式的system堆栈,不会断流和panic 表现为: 用1-3分钟后,断流,过几分钟又能连上。

moranno avatar Apr 16 '24 01:04 moranno

请本人使用并反馈,否则不易于跟踪问题,另外这有可能是中间链路的问题,最好是本地复现之后,再来反馈

xishang0128 avatar Apr 16 '24 06:04 xishang0128

请本人使用并反馈,否则不易于跟踪问题,另外这有可能是中间链路的问题,最好是本地复现之后,再来反馈

更新了日志和说明,请查看。

moranno avatar Apr 17 '24 08:04 moranno

这个panic两周前就修过了 https://github.com/MetaCubeX/mihomo/commit/b56e73a02aee3a791ec3b45cb6a0f4b80f95d717

wwqgtxx avatar Apr 17 '24 09:04 wwqgtxx

这个panic两周前就修过了 b56e73a

问题在mixed和givisor中依旧,system正常

NSCAP-BOT avatar Apr 17 '24 10:04 NSCAP-BOT

@gs507 请附上最新版本出错的日志

wwqgtxx avatar Apr 17 '24 10:04 wwqgtxx

@gs507 请附上最新版本出错的日志

如上,就是我给的日志

NSCAP-BOT avatar Apr 17 '24 16:04 NSCAP-BOT

你那个日志明显不是最新版的

wwqgtxx avatar Apr 17 '24 16:04 wwqgtxx

@wwqgtxx 最新log发出来了(ff2071c)

NSCAP-BOT avatar Apr 17 '24 17:04 NSCAP-BOT

@gs507 麻烦发核心的日志,你发verge有啥用

wwqgtxx avatar Apr 17 '24 17:04 wwqgtxx

2024-04-18-0058.log @wwqgtxx 这个应该是

看了下你最新的日志中没有panic的记录,反而有很多dns查询错误的记录

time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS Server] Exchange ;www.msftconnecttest.com.\tIN\t AAAA failed: all DNS requests failed, first error: connect failed: dial udp 114.114.115.115:53: i/o timeout"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS] resolve www.msftconnecttest.com from https://dns.alidns.com:443/dns-query"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS Server] Exchange ;www.msftconnecttest.com.\tIN\t AAAA failed: all DNS requests failed, first error: connect failed: dial udp 114.114.115.115:53: i/o timeout"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS] resolve www.msftconnecttest.com from udp://223.6.6.6:53"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS Server] Exchange ;www.msftconnecttest.com.\tIN\t AAAA failed: all DNS requests failed, first error: connect failed: dial udp 114.114.115.115:53: i/o timeout"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS Server] Exchange ;www.msftconnecttest.com.\tIN\t AAAA failed: all DNS requests failed, first error: connect failed: dial udp 114.114.115.115:53: i/o timeout"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS] resolve www.msftconnecttest.com from https://doh.pub:443/dns-query"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS] resolve www.msftconnecttest.com from https://dns.rubyfish.cn:443/dns-query"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS] resolve www.msftconnecttest.com from https://223.6.6.6:443/dns-query"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS] resolve www.msftconnecttest.com from udp://180.76.76.76:53"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS] cache hit for dns.rubyfish.cn., expire at 2024-04-18 01:00:06"
time="2024-04-18T00:58:58.2857129+08:00" level=debug msg="[DNS] cache hit for dns.rubyfish.cn., expire at 2024-04-18 01:03:39"
time="2024-04-18T00:58:58.2867519+08:00" level=info msg="[TCP] 198.18.0.1:58427 --> www.msftconnecttest.com:80 using GLOBAL"
time="2024-04-18T00:58:58.2929411+08:00" level=debug msg="[DNS] www.msftconnecttest.com --> [] AAAA from https://dns.alidns.com:443/dns-query"
time="2024-04-18T00:58:58.2950075+08:00" level=debug msg="[DNS] www.msftconnecttest.com --> [] AAAA from udp://223.6.6.6:53"
time="2024-04-18T00:58:58.2988522+08:00" level=debug msg="[DNS] www.msftconnecttest.com --> [] AAAA from https://223.6.6.6:443/dns-query"
time="2024-04-18T00:58:58.2988522+08:00" level=debug msg="[DNS] www.msftconnecttest.com --> [] AAAA from https://doh.pub:443/dns-query"
time="2024-04-18T00:58:58.3002359+08:00" level=debug msg="[DNS] www.msftconnecttest.com --> [] AAAA from udp://180.76.76.76:53"

moranno avatar Apr 17 '24 18:04 moranno

@wwqgtxx 但这无法解释discord语音服务器频繁掉线的问题

NSCAP-BOT avatar Apr 17 '24 19:04 NSCAP-BOT

shadowsocks暂时无问题,而hy2问题延伸到system了

NSCAP-BOT avatar Apr 17 '24 19:04 NSCAP-BOT