jaypipes / ghw

Go HardWare discovery/inspection library
Apache License 2.0
1.62k stars 174 forks source link

On my windows, sometimes it show error: Cannot change thread mode after it is set #332

Open longit123 opened 1 year ago

longit123 commented 1 year ago

ghw version: v0.10.0 GPU: RTX3070 Win10: 21H2 19044.1889 Go version: 1.19.6

longit123 commented 1 year ago

it is easy to appear after calling multiple times

gpu, err := ghw.GPU()
jaypipes commented 1 year ago

@longit123 does this only happen when calling the GPU function or does this happen when you call any ghw function on Windows?

longit123 commented 1 year ago

I am using wails + front-end development. Wails will monitor file updates during development and then perform hot updates. When I did not use ghw before, this problem did not occur. After using ghw, this problem will appear. After I Googled it, it may be due to the use of wails webview2, caused by hot update, I don't know how to solve this problem

longit123 commented 1 year ago

https://wails.io/docs/howdoesitwork/

jaypipes commented 1 year ago

ghw does not write any files so I don't believe the file monitoring that Wails (or Vite) does is part of this. I suspect this may be a problem with the go-ole/go-ole library that the StackExchange/wmi dependency uses. Unfortunately, I don't know if there's anything that ghw can do to address this issue :(

jaypipes commented 1 year ago

Please see this related thread in another project that uses WMI/go-ole:

https://github.com/shirou/gopsutil/issues/692

matwachich commented 1 year ago

I think I solved this by calling hardwareID functions inside a goroutine that I lock on thread (runtime.LockOSThread)