hasherezade / tiny_tracer

A Pin Tool for tracing API calls etc
1.25k stars 138 forks source link

Failed to trace golang program #31

Closed b1tg closed 1 year ago

b1tg commented 1 year ago

I found tiny_tracer not work on golang program:

image

pin.log

Pin: pin-3.28-98749-6643ecee5
Copyright 2002-2023 Intel Corporation.
E:  UPC Dispatcher: Unhandled internal exception in Pin or tool. ThreadId = 0 SysThreadId = 16336. Interruption context: IP: 0x05e8a9ef3 SP: 0x264f253c310. Exception Code: RECEIVED_ACCESS_FAULT. Exception Address = 0x05e8a9ef3. Access Type: READ. Access Address = 0x00005e2fc. ExceptionFlags: 0x000000000
hasherezade commented 1 year ago

Hi @b1tg ! Actually, I wasn't able to reproduce your problem. I created a demo application from the same code (attachment: a.zip) - and it got traced without any issues:

traced_ok

But from what I see, you have 8 functions watched, so you added some custom entries. I guess the error occurs on the attempt to dump some parameters. Can you please share your params.txt file, so that I can take a closer look where exactly it happens?

b1tg commented 1 year ago

@hasherezade I can't reproduce the bug with your exe, and after clean my params.txt, same thing occurs, after i rebuilt tiny_tracer, the UPC Dispatcher issue disappear, maybe i have some misconfiguration before.

Here i found another Golang program to produce a different bug:

D:\a\go1.16.3.windows-amd64\go>bin\go.exe build gohttps.go

D:\a\go1.16.3.windows-amd64\go>gohttps.exe
code: 200
package main
import (
    "net/http"
    "fmt"
        "crypto/tls"
)

func curl(url string) {
    http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{
        InsecureSkipVerify: true,
        // MinVersion: tls.VersionTLS13,
    }
    resp, err := http.Get(url)
    if err != nil {
        fmt.Printf("error: %v", err)
        return
    }
    defer resp.Body.Close()
    fmt.Printf("code: %d\n", resp.StatusCode )
}

func main() {
     curl("https://example.com")
}

run with pin:

PIN is trying to run the app:
"D:\a\go1.16.3.windows-amd64\go\gohttps.exe"
KDB: Disabled
64bit selected
Target module: "D:\a\go1.16.3.windows-amd64\go\gohttps.exe"
Tag file: "D:\a\go1.16.3.windows-amd64\go\gohttps.exe.tag"
Watch 0 functions
Watch 0 syscalls
SyscallTable size: 1790
===============================================
This application is instrumented by TinyTracer v.2.3
Tracing module: D:\a\go1.16.3.windows-amd64\go\gohttps.exe
See file D:\a\go1.16.3.windows-amd64\go\gohttps.exe.tag for analysis results
===============================================
unexpected fault address 0xf74459
fatal error: fault
[signal 0xc0000005 code=0x1 addr=0xf74459 pc=0xf7619b]

goroutine 9 [running]:
runtime.throw(0x110b633, 0x5)
        D:/a/go1.16.3.windows-amd64/go/src/runtime/panic.go:1117 +0x79 fp=0xc000109440 sp=0xc000109410 pc=0xea9219
runtime.sigpanic()
        D:/a/go1.16.3.windows-amd64/go/src/runtime/signal_windows.go:245 +0x2d6 fp=0xc000109498 sp=0xc000109440 pc=0xebd716
crypto/elliptic.p256Mul(0xf74459, 0xc000109648, 0x4, 0xf74459, 0xc000109648, 0x4, 0xc000109508, 0x4, 0x14, 0x10, ...)
        D:/a/go1.16.3.windows-amd64/go/src/crypto/elliptic/p256_asm_amd64.s:520 +0x23b fp=0xc0001094a0 sp=0xc000109498 pc=0xf7619b
runtime: unexpected return pc for crypto/elliptic.p256Inverse called from 0xc000109788
stack: frame={sp:0xc0001094a0, fp:0xc0001095b8} stack=[0xc000106000,0xc00010a000)
000000c0001093a0:  0000000000000001  0000000000000001
000000c0001093b0:  000000c000109428  0000000000000008
000000c0001093c0:  000000c000109410  0000000000eab47f <runtime.printstring+127>
000000c0001093d0:  0000000000ea93fe <runtime.fatalthrow+94>  000000c0001093e0
000000c0001093e0:  0000000000ed43a0 <runtime.fatalthrow.func1+0>  000000c00004f500
000000c0001093f0:  0000000000ea9219 <runtime.throw+121>  000000c000109410
000000c000109400:  000000c000109430  0000000000ea9219 <runtime.throw+121>
000000c000109410:  000000c000109418  0000000000ed4300 <runtime.throw.func1+0>
000000c000109420:  000000000110b633  0000000000000005
000000c000109430:  000000c000109488  0000000000ebd716 <runtime.sigpanic+726>
000000c000109440:  000000000110b633  0000000000000005
000000c000109450:  2dad6dc4888dac35  c29b8c0ebb93818b
000000c000109460:  0000000000f74459 <crypto/elliptic.initTable+633>  000000c00004f500
000000c000109470:  6f0fdf3058277d9d  caec5a5048cd6d1e
000000c000109480:  7c663902ac0891ea  000000c0001095b0
000000c000109490:  0000000000f7619b <crypto/elliptic.p256Mul+571>  0000000000f7407e <crypto/elliptic.p256Inverse+2014>
000000c0001094a0: <0000000000f74459 <crypto/elliptic.initTable+633>  000000c000109648
000000c0001094b0:  0000000000000004  0000000000f74459 <crypto/elliptic.initTable+633>
000000c0001094c0:  000000c000109648  0000000000000004
000000c0001094d0:  000000c000109508  0000000000000004
000000c0001094e0:  0000000000000014  0000000000000010
000000c0001094f0:  eccd604731774068  199feeaae439af66
000000c000109500:  ec22195f2d67fce0  e3f51fde499c4401
000000c000109510:  12a2b07b1f2abf06  43b7a8d4ef96f98c
000000c000109520:  099d3e93706de8aa  83a52c29db7c7681
000000c000109530:  2a955d33d3f0e8a5  f1484791a41dea0d
000000c000109540:  4bfbf42f97cf9e83  6bbdde395dc805b3
000000c000109550:  874655e02573d984  0dbc38863ca11dea
000000c000109560:  55fe32f849ed9f53  f33b554d5f4785a2
000000c000109570:  1f0a8184f6846d27  dd068a89112afc06
000000c000109580:  9d2e7e1ecdc4a8dd  6d19f1ba04aa9683
000000c000109590:  0000000000000000  0000000000000000
000000c0001095a0:  0000000000000000  0000000000000000
000000c0001095b0: !000000c000109788 >0000000000f74459 <crypto/elliptic.initTable+633>
000000c0001095c0:  000000c000109648  0000000000000004
000000c0001095d0:  0000000000000004  000000c000109708
000000c0001095e0:  0000000000000004  0000000000000004
000000c0001095f0:  000000c000109648  0000000000000004
000000c000109600:  0000000000000004  0000000000000000
000000c000109610:  0000000000000005  000000000000000b
000000c000109620:  0000000000000026  7f9e5339728a9d07
000000c000109630:  f089e46bcb81b35d  bf106127d9907379
000000c000109640:  f295f362b6fa537d  1c784762d1c0633d
000000c000109650:  825c26aade687f1f  8521806c5cb6c7ed
000000c000109660:  fab9d581fdd82260  dcfdfceb02d4a31c
000000c000109670:  afb3d394eb063e84  b01d452ceb5c5e15
000000c000109680:  bc28527dfacd90d6  632fec6ed1039794
000000c000109690:  58d586eb5291c1cd  f8135ddad781f6ea
000000c0001096a0:  2aa28a49e3b99078  66d4380b9cf868fc
000000c0001096b0:  d5bb160d0cc8859d
crypto/elliptic.p256Inverse(0xf74459, 0xc000109648, 0x4, 0x4, 0xc000109708, 0x4)
        D:/a/go1.16.3.windows-amd64/go/src/crypto/elliptic/p256_asm.go:385 +0x7de fp=0xc0001095b8 sp=0xc0001094a0 pc=0xf7407e
created by net/http.(*persistConn).addTLS
        D:/a/go1.16.3.windows-amd64/go/src/net/http/transport.go:1526 +0x1f8

goroutine 1 [select]:
net/http.(*Transport).getConn(0x12add40, 0xc000066200, 0x0, 0x110f829, 0x5, 0xc00000a9e0, 0xf, 0x0, 0x0, 0x0, ...)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/transport.go:1368 +0x589
net/http.(*Transport).roundTrip(0x12add40, 0xc0001d2000, 0x30, 0x10f9ae0, 0x19cc0d0e900)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/transport.go:579 +0x80b
net/http.(*Transport).RoundTrip(0x12add40, 0xc0001d2000, 0x12add40, 0x0, 0x0)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/roundtrip.go:17 +0x3c
net/http.send(0xc0001d2000, 0x1161660, 0x12add40, 0x0, 0x0, 0x0, 0xc000006030, 0x2030000, 0x1, 0x0)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/client.go:251 +0x474
net/http.(*Client).send(0x12b3540, 0xc0001d2000, 0x0, 0x0, 0x0, 0xc000006030, 0x0, 0x1, 0xc0001d2000)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/client.go:175 +0x105
net/http.(*Client).do(0x12b3540, 0xc0001d2000, 0x0, 0x0, 0x0)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/client.go:717 +0x45f
net/http.(*Client).Do(...)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/client.go:585
net/http.(*Client).Get(0x12b3540, 0x110f829, 0x13, 0x10100c00001e0c8, 0x19cc2933170, 0x0)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/client.go:474 +0xc5
net/http.Get(...)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/client.go:446
main.curl(0x110f829, 0x13)
        D:/a/go1.16.3.windows-amd64/go/gohttps.go:14 +0xd0
main.main()
        D:/a/go1.16.3.windows-amd64/go/gohttps.go:24 +0x3d

goroutine 6 [chan receive]:
net/http.(*persistConn).addTLS(0xc00011a000, 0xc00000a9e0, 0xb, 0x0, 0xc00000a9ec, 0x3)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/transport.go:1536 +0x225
net/http.(*Transport).dialConn(0x12add40, 0x1164e50, 0xc00000a090, 0x0, 0x110f829, 0x5, 0xc00000a9e0, 0xf, 0x0, 0xc00011a000, ...)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/transport.go:1610 +0x1e25
net/http.(*Transport).dialConnFor(0x12add40, 0xc0001b22c0)
        D:/a/go1.16.3.windows-amd64/go/src/net/http/transport.go:1442 +0xcd
created by net/http.(*Transport).queueForDial
        D:/a/go1.16.3.windows-amd64/go/src/net/http/transport.go:1411 +0x40f
hasherezade commented 1 year ago

@b1tg - thanks, I reproduced it now, getting different errors on different runs: https://gist.github.com/hasherezade/32bcac5b28e1c9e4a73659c6eb816561 , including the one that you showed: https://gist.github.com/hasherezade/32bcac5b28e1c9e4a73659c6eb816561#file-go_err2-txt Even tracing with minimal options (no params.txt, everything disabled in the .ini file) causes an error: https://gist.github.com/hasherezade/32bcac5b28e1c9e4a73659c6eb816561#file-go_err3-txt

I started to suspect it may be a problem with PIN platform itself. It seems the golang applications doesn't work well with the way PIN instruments them. I tried tracing the same application with a demo tool included in the PIN package, and also got a similar error:

C:\Users\tester>C:\pin\pin.exe -t C:\pin\source\tools\MyPinTool\x64\Release\MyPinTool.dll -o outs.tag -- C:\Users\tester\Desktop\go1.16.3.windows-amd64\go\bin\gohttps.exe
===============================================
This application is instrumented by MyPinTool
See file outs.tag for analysis results
===============================================
runtime: unexpected return pc for net.init called from 0xc00007fa38
stack: frame={sp:0xc00007f898, fp:0xc00007f8f0} stack=[0xc000070000,0xc000080000)
000000c00007f798:  000001ec4f3424b0  000000c00007f828
000000c00007f7a8:  0000000000d2dee9 <runtime.mallocgc+905>  000000c0001a8000
000000c00007f7b8:  00000000000000d0  00000000000000d0
000000c00007f7c8:  000000c00002a000  0000000000000001
000000c00007f7d8:  0001000000000030  000001ec4f3424b0
000000c00007f7e8:  00000000000000d0  000000c00002a020
000000c00007f7f8:  0000000000000000  0000000000f7a360
000000c00007f808:  000000000115a490  0000000000000000
000000c00007f818:  0000000000000000  0000000000000000
000000c00007f828:  0000000000000000  000000c00007f888
000000c00007f838:  0000000000d6d725 <runtime.sigpanic+741>  0000000000f7a360
000000c00007f848:  000000000115a490  000000c0001a8000
000000c00007f858:  a800000000fa9ae0  000000c00007f801
000000c00007f868:  000000c00002a000  000000c00007f890
000000c00007f878:  0000000000d2f2b4 <runtime.makemap_small+52>  0000000000fa9ae0
000000c00007f888:  000000c00007f8e8  0000000000e71981 <net.init+1217>
000000c00007f898: <0000000000e7197c <net.init+1212>  0000000000f78bc0
000000c00007f8a8:  000000c0001981b0  0000000000fbb421
000000c00007f8b8:  0000000000000004  000000c0001a8088
000000c00007f8c8:  0000000000fbbd87  0000000000000008
000000c00007f8d8:  000000000112cf00  000000c0001981b0
000000c00007f8e8: !000000c00007fa38 >0000000000d68edd <runtime.doInit+253>
000000c00007f8f8:  000000000112d320  000000c00007f988
000000c00007f908:  0000000000d2dee9 <runtime.mallocgc+905>  000000c00007f998
000000c00007f918:  0000000000d2dee9 <runtime.mallocgc+905>  000000c0001840e0
000000c00007f928:  0000000000000010  0000000000000000
000000c00007f938:  0000000000f82220  0000000000000000
000000c00007f948:  000000000000000d  000001ec4f342db8
000000c00007f958:  0000000000000000  0000000000000000
000000c00007f968:  000001ec26bf0a28  0000000000000010
000000c00007f978:  000000c0001840e0  000000000000000e
000000c00007f988:  0000000001165cc0  0000000000000000
000000c00007f998:  000000c00007f9c8  0000000000d2e65f <runtime.newobject+63>
000000c00007f9a8:  0000000000000010  0000000000f82220
000000c00007f9b8:  0000000000000001  000000c0001840e0
000000c00007f9c8:  000000c00007fa38  0000000000e47d65 <crypto/rsa.init+1605>
000000c00007f9d8:  0000000000f82220  000000c0001840e0
000000c00007f9e8:  000000c000188100
fatal error: unknown caller pc

runtime stack:
runtime.throw(0xfbedb8, 0x11)
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/panic.go:1117 +0x79
runtime.gentraceback(0xd6d725, 0xc00007f840, 0x0, 0xc00002a000, 0x0, 0x0, 0x7fffffff, 0x95f5dffc80, 0x0, 0x0, ...)
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/traceback.go:261 +0x1a76
runtime.addOneOpenDeferFrame.func1()
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/panic.go:717 +0x98
runtime.systemstack(0x0)
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/asm_amd64.s:379 +0x6b
runtime.mstart()
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/proc.go:1246

goroutine 1 [running, locked to thread]:
runtime.systemstack_switch()
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/asm_amd64.s:339 fp=0xc00007f738 sp=0xc00007f730 pc=0xd8a380
runtime.addOneOpenDeferFrame(0xc00002a000, 0xd6d725, 0xc00007f840)
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/panic.go:716 +0x85 fp=0xc00007f778 sp=0xc00007f738 pc=0xd57e45
panic(0xf7a360, 0x115a490)
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/panic.go:925 +0x12e fp=0xc00007f840 sp=0xc00007f778 pc=0xd589ce
runtime.panicmem(...)
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/panic.go:212
runtime.sigpanic()
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/signal_windows.go:239 +0x2e5 fp=0xc00007f898 sp=0xc00007f840 pc=0xd6d725
runtime: unexpected return pc for net.init called from 0xc00007fa38
stack: frame={sp:0xc00007f898, fp:0xc00007f8f0} stack=[0xc000070000,0xc000080000)
000000c00007f798:  000001ec4f3424b0  000000c00007f828
000000c00007f7a8:  0000000000d2dee9 <runtime.mallocgc+905>  000000c0001a8000
000000c00007f7b8:  00000000000000d0  00000000000000d0
000000c00007f7c8:  000000c00002a000  0000000000000001
000000c00007f7d8:  0001000000000030  000001ec4f3424b0
000000c00007f7e8:  00000000000000d0  000000c00002a020
000000c00007f7f8:  0000000000000000  0000000000f7a360
000000c00007f808:  000000000115a490  0000000000000000
000000c00007f818:  0000000000000000  0000000000000000
000000c00007f828:  0000000000000000  000000c00007f888
000000c00007f838:  0000000000d6d725 <runtime.sigpanic+741>  0000000000f7a360
000000c00007f848:  000000000115a490  000000c0001a8000
000000c00007f858:  a800000000fa9ae0  000000c00007f801
000000c00007f868:  000000c00002a000  000000c00007f890
000000c00007f878:  0000000000d2f2b4 <runtime.makemap_small+52>  0000000000fa9ae0
000000c00007f888:  000000c00007f8e8  0000000000e71981 <net.init+1217>
000000c00007f898: <0000000000e7197c <net.init+1212>  0000000000f78bc0
000000c00007f8a8:  000000c0001981b0  0000000000fbb421
000000c00007f8b8:  0000000000000004  000000c0001a8088
000000c00007f8c8:  0000000000fbbd87  0000000000000008
000000c00007f8d8:  000000000112cf00  000000c0001981b0
000000c00007f8e8: !000000c00007fa38 >0000000000d68edd <runtime.doInit+253>
000000c00007f8f8:  000000000112d320  000000c00007f988
000000c00007f908:  0000000000d2dee9 <runtime.mallocgc+905>  000000c00007f998
000000c00007f918:  0000000000d2dee9 <runtime.mallocgc+905>  000000c0001840e0
000000c00007f928:  0000000000000010  0000000000000000
000000c00007f938:  0000000000f82220  0000000000000000
000000c00007f948:  000000000000000d  000001ec4f342db8
000000c00007f958:  0000000000000000  0000000000000000
000000c00007f968:  000001ec26bf0a28  0000000000000010
000000c00007f978:  000000c0001840e0  000000000000000e
000000c00007f988:  0000000001165cc0  0000000000000000
000000c00007f998:  000000c00007f9c8  0000000000d2e65f <runtime.newobject+63>
000000c00007f9a8:  0000000000000010  0000000000f82220
000000c00007f9b8:  0000000000000001  000000c0001840e0
000000c00007f9c8:  000000c00007fa38  0000000000e47d65 <crypto/rsa.init+1605>
000000c00007f9d8:  0000000000f82220  000000c0001840e0
000000c00007f9e8:  000000c000188100
net.init()
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/net/lookup.go:22 +0x4c1 fp=0xc00007f8f0 sp=0xc00007f898 pc=0xe71981

and on the second run:

C:\Users\tester>C:\pin\pin.exe -t C:\pin\source\tools\MyPinTool\x64\Release\MyPinTool.dll -o outs.tag -- C:\Users\tester\Desktop\go1.16.3.windows-amd64\go\bin\gohttps.exe
===============================================
This application is instrumented by MyPinTool
See file outs.tag for analysis results
===============================================
Exception 0xc0000005 0x1 0x104 0x7fffbaef3be7
PC=0x7fffbaef3be7

syscall.Syscall(0x7fffba3eae00, 0x2, 0x104, 0xc0, 0x0, 0x0, 0x0, 0x0)
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/runtime/syscall_windows.go:330 +0xe9
syscall.getSystemDirectory(0x104, 0xc0, 0x104, 0x104, 0xc00011a000)
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/syscall/zsyscall_windows.go:860 +0x94
runtime: unexpected return pc for syscall.init.0 called from 0xc00010ba38
stack: frame={sp:0xc00010b898, fp:0xc00010b8f0} stack=[0xc000108000,0xc00010c000)
000000c00010b798:  0000000000d246f5 <runtime.cgocall+85>  000000c00010b7b8
000000c00010b7a8:  0000000000d8be07 <runtime.asmcgocall+71>  0000000000d2474b <runtime.cgocall+171>
000000c00010b7b8:  0000000000d8d9a0 <runtime.asmstdcall+0>  0000000001165f98
000000c00010b7c8:  000000c00010b820  0000000000d9a676 <syscall.(*LazyProc).Find+118>
000000c00010b7d8:  0000000001165cc0  000000c00010b820
000000c00010b7e8:  0000000000d89009 <syscall.Syscall+233>  0000000000d8d9a0 <runtime.asmstdcall+0>
000000c00010b7f8:  0000000001165f98  0000000000000000
000000c00010b808:  010000c00010e001  0000000001165cc0
000000c00010b818:  0000000000fd3750  000000c00010b888
000000c00010b828:  0000000000d9df74 <syscall.getSystemDirectory+148>  00007fffba3eae00
000000c00010b838:  0000000000000002  0000000000000104
000000c00010b848:  00000000000000c0  0000000000000000
000000c00010b858:  0000000000000000  0000000000000000
000000c00010b868:  0000000000000000  0000000000000208
000000c00010b878:  000000c000100f00  0000000000000104
000000c00010b888:  000000c00010b8e8  0000000000d99b1b <syscall.init.0+123>
000000c00010b898: <0000000000000104  00000000000000c0
000000c00010b8a8:  0000000000000104  0000000000000104
000000c00010b8b8:  000000c00011a000  000000c00010e080
000000c00010b8c8:  000000c00010e0c0  000000c00010e080
000000c00010b8d8:  0000000000000104  000000c00010e080
000000c00010b8e8: !000000c00010ba38 >0000000000d68edd <runtime.doInit+253>
000000c00010b8f8:  000000000112f820  0000000000000000
000000c00010b908:  0000000000000000  0000000000000200
000000c00010b918:  0000020973d80aa8  0000000000000000
000000c00010b928:  000000c000031960  0000000000000000
000000c00010b938:  0000020973d80aa8  0000000000000001
000000c00010b948:  0000000000000004  0000000000000000
000000c00010b958:  0000000000000000  0000000000000000
000000c00010b968:  0000000000d2dee9 <runtime.mallocgc+905>  000000c000088000
000000c00010b978:  0000000000000010  0000000000000005
000000c00010b988:  0000000000f73d20  0000000000000001
000000c00010b998:  0001000000000000  0000020973d80aa8
000000c00010b9a8:  0000000000000010  0000000000000010
000000c00010b9b8:  000002094bf70598  0000000000000010
000000c00010b9c8:  000000c000088000  0000000000000000
000000c00010b9d8:  0000000001165cc0  0000000000000000
000000c00010b9e8:  000000c000031a18
syscall.init.0()
        C:/Users/tester/Desktop/go1.16.3.windows-amd64/go/src/syscall/dll_windows.go:51 +0x7b
rax     0x104
rbx     0xc0
rcx     0x110
rdi     0x7fffb895bc80
rsi     0x104
rbp     0xc00010b7e0
rsp     0x7b269ff9c8
r8      0x26
r9      0x0
r10     0x2030000
r11     0x7ff4a76811e6
r12     0xf94ae0
r13     0x0
r14     0x0
r15     0x2030000
rip     0x7fffbaef3be7
rflags  0x10202
cs      0x33
fs      0x53
gs      0x2b

So unfortunately, it seems to be something beyond my control, as PIN is not open source. And by the characteristics of this issue, it doesn't seem I can implement a workaround for it just in my tool.

_Used demo: gohttps.zip_