electricbubble / gidevice

communicate with iOS devices implemented with Golang
MIT License
274 stars 68 forks source link

panic: runtime error: invalid memory address or nil pointer dereference #38

Closed ZhouYixun closed 2 years ago

ZhouYixun commented 2 years ago

用的过程会有偶现这个报错,一般重试可以正常运行,但是想看看能不能优化一下这部分

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x20 pc=0x704070]

goroutine 9 [running]:
github.com/electricbubble/gidevice/pkg/libimobiledevice.(*dtxMessageClient).startReceive.func1()
        *********/go/pkg/mod/github.com/electricbubble/gidevice@v0.6.0/pkg/libimobiledevice/client_dtxmessage.go:342 +0x30
created by github.com/electricbubble/gidevice/pkg/libimobiledevice.(*dtxMessageClient).startReceive
       ********/go/pkg/mod/github.com/electricbubble/gidevice@v0.6.0/pkg/libimobiledevice/client_dtxmessage.go:339 +0x56
exit status 2
electricbubble commented 2 years ago

大概出现的使用场景是什么?

ZhouYixun commented 2 years ago

大概出现的使用场景是什么?

使用xctest

electricbubble commented 2 years ago

看一下报错时的调试日志 👇

SetDebug(false, true)

大概报错的频率?

ZhouYixun commented 2 years ago

最后几行是

2022/07/24 21:55:53 [libimobiledevice-debug] --> Length: 565, Version: 1, Type: 8, Tag: 1
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>BundleID</key><string>electricbubble.libimobiledevice</string><key>ClientVersionString</key><string>libimobiledevice-beta</string><key>DeviceID</key><integer>49</integer><key>MessageType</key><string>
Connect</string><key>PortNumber</key><integer>3266</integer><key>ProgName</key><string>libimobiledevice</string><key>kLibUSBMuxVersion</key><integer>3</integer></dict></plist>

2022/07/24 21:55:53 [libimobiledevice-debug] <-- Length: 294, Version: 1, Type: 8, Tag: 1
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>MessageType</key>
        <string>Result</string>
        <key>Number</key>
        <integer>0</integer>
</dict>
</plist>

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x20 pc=0x904070]

goroutine 15 [running]:
github.com/electricbubble/gidevice/pkg/libimobiledevice.(*dtxMessageClient).startReceive.func1()
        C:/Users/****/go/pkg/mod/github.com/electricbubble/gidevice@v0.6.0/pkg/libimobiledevice/client_dtxmessage.go:342 +0x30
created by github.com/electricbubble/gidevice/pkg/libimobiledevice.(*dtxMessageClient).startReceive
        C:/Users/****/go/pkg/mod/github.com/electricbubble/gidevice@v0.6.0/pkg/libimobiledevice/client_dtxmessage.go:339 +0x56
exit status 2
ZhouYixun commented 2 years ago

再往上貌似一切正常

2022/07/24 21:55:53 [libimobiledevice-debug] <-- Length: 354
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>EnableSessionSSL</key>
        <true/>
        <key>Request</key>
        <string>StartSession</string>
        <key>SessionID</key>
        <string>9A24DAE******C7A9B42</string>
</dict>
</plist>

2022/07/24 21:55:53 [libimobiledevice-debug] --> Length: 412
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>Label</key><string>electricbubble.libimobiledevice</string><key>ProtocolVersion</key><string>2</string><key>Request</key><string>StartService</string><key>Service</key><string>com.apple.testmanagerd.l
ockdown.secure</string></dict></plist>

2022/07/24 21:55:53 [libimobiledevice-debug] <-- Length: 397
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>EnableServiceSSL</key>
        <true/>
        <key>Port</key>
        <integer>49676</integer>
        <key>Request</key>
        <string>StartService</string>
        <key>Service</key>
        <string>com.apple.testmanagerd.lockdown.secure</string>
</dict>
</plist>
electricbubble commented 2 years ago

试试 v0.6.2

ZhouYixun commented 2 years ago

试试 v0.6.2

ok,明天我看看

ZhouYixun commented 2 years ago

跑了20遍没发现出错,我先关掉

electricbubble commented 2 years ago

你的使用场景有主动断开?

ZhouYixun commented 2 years ago

你的使用场景有主动断开?

cli跑的时候,想停止就会断呀

ZhouYixun commented 2 years ago

跑了几天没再出现了,稳定了许多