Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use of pyocd to flash from powershell seems to emit an error #1129

Open
thedjnK opened this issue Apr 1, 2021 · 12 comments
Open

Use of pyocd to flash from powershell seems to emit an error #1129

thedjnK opened this issue Apr 1, 2021 · 12 comments

Comments

@thedjnK
Copy link

thedjnK commented Apr 1, 2021

We have had a report from someone internally using pyocd on a windows 10 system with a DAPLINK programmer trying to program an nRF52840 module whereby after it has finished, they get the error "An error has occurred that was not properly handled. Additional information is shown below. The windows powershell process will exit

[process exited with code 2]"

Upon trying to reproduce the issue on my windows 10 machine using pyocd 0.29.x I could not reproduce it, I upgraded to the latest, 0.30.3, and when flashing using powershell it seems to go OK then for me, about 2 seconds later, the powershell window closed by itself (this is a prompt I opened in a directory, not using a dedicated command just to run the pyocd command). Using command prompt inside a powershell window does not cause any issues or errors or windows closing on either of these machines so it seems to be an issue using it directly with powershell.

@newbrain
Copy link
Collaborator

newbrain commented Apr 1, 2021

Interesting,
This happened to me (only once) yesterday, flashing with a CMSIS DAP (RT1020EVK), from a PS inside Visual Studio Code.
I imputed it to a random fluke, and I also had a "funny" elf file, but I was on 0.30.2. <- checked, and edited.

Since I'm going to heavily use it in the following days, I'll report here if it happens with any regularity.

@flit
Copy link
Member

flit commented Apr 1, 2021

Very interesting… thanks for the report. I don't use Windows much, and never PowerShell, so never would have seen this. Any ideas on what could be different between PS and cmd.exe?

Is there a way to enable crash reports with logs and stack traces in Windows?

Anyway, if it's reproducible, maybe I can run Python under Visual Studio to see if it's crashing.

@newbrain
Copy link
Collaborator

newbrain commented Apr 6, 2021

Well, it never happened again, so I cannot really help.
I've flashed the board at least 40 times, from Powershell v7.1.3, both inside VS Code and in a Windows Terminal window.
The only real change is that the .elf is now less 'funny' (linker scripts are hard), if I have time I might try to recreate it and retest.

Some background update we were unlucky to catch? Really have no idea, though.

and never PowerShell

You should give it a go, at least in Windows.
It's an extremely powerful scripting language, with a rational syntax (sometimes annoyingly verbose) and native object orientation.
It's also available on Linux (and Mac IIRC), but it shines on Windows where one can deeply interact with the system; e.g. I use a script entirely in PS to create and send WoL packets.

@flit
Copy link
Member

flit commented Apr 10, 2021

@newbrain Thanks for trying to reproduce it. And yeah, linker scripts are hard! I've been pretty curious about PowerShell, it does seem quite capable. And being available for Linux and Mac is nice and impressive.

@thedjnK Do you happen to know what version of PowerShell was being used when the error occurred?

@BlokhinDima
Copy link

Hello. I have the same error. Powershell crashes every time when flashing or erasing process is finished.
Power Shell Version 5.1.14393.479

@thedjnK
Copy link
Author

thedjnK commented Aug 16, 2021

@flit Only just noticed the query, it was whatever version was built into windows 10 at the time

@HrMitrev
Copy link

I have the same problem. Powershell crashes every time pyOCD interracts with my debugger.

PS C:\Users\hrmit> Get-Host | Select-Object Version

Version
-------
5.1.22000.282


PS C:\Users\hrmit> pyocd list
  #   Probe           Unique ID
------------------------------------------------
  0   ST-Link Debug   066DFF393238424E43144037
PS C:\Users\hrmit>
[process exited with code 2]

@elfmimi
Copy link

elfmimi commented Dec 5, 2021

I'm experiencing this same problem. it's ok with cmd prompt. but somehow it kills PowerShell with weirdly delayed activation.

now, here are hints I've found.

just pyocd or pyocd --version is ok. it does no harm.

pyocd list or pyocd json or pyocd reset does do harm.

but pyocd commander is ok. list or reset or probably anything works fine in commander mode. and after exiting commander mode with exit command, it still cause no problem. PowerShell won't get killed. it just keeps working fine.

PS Version: 5.1.19041.1320
Python: 3.8.10 or 3.9.9
PyOCD: 0.29.0 or 0.32.1

@elfmimi
Copy link

elfmimi commented Dec 5, 2021

There are more to this.

pyocd commander -c exit is ok.
pyocd commander -c help is ok.
pyocd commander -c list is not ok.
pyocd commander -c reset is not ok.

pyocd commander -c BOOM is not ok.
this one reports

Error: unrecognized command 'boom'

and then PowerShell will get killed all the same. WHY!?

by the way, executing a sequence of commands like list;exit inside the commander prompt is ok.

@elfmimi
Copy link

elfmimi commented Dec 5, 2021

Turned out testing with PowerShell 7.2 which is available at MicrosoftStore gives seemingly useful information.

PS C:\Windows\System32> pyocd list
  #   Probe              Unique ID
---------------------------------------------------------------------------
  0   Arm CMSIS-DAP v1   0000008004a0247a00000000000000000000000097969902
PS C:\Windows\System32>
An error has occurred that was not properly handled. Additional information is shown below. The PowerShell process will exit.
Unhandled exception. System.ArgumentOutOfRangeException: Console key values must be between 0 and 255 inclusive. (Parameter 'key')
   at System.ConsoleKeyInfo..ctor(Char keyChar, ConsoleKey key, Boolean shift, Boolean alt, Boolean control)
   at System.ConsolePal.ReadKey(Boolean intercept)
   at System.Console.ReadKey(Boolean intercept)
   at Microsoft.PowerShell.Internal.VirtualTerminal.ReadKey()
   at Microsoft.PowerShell.PSConsoleReadLine.ReadOneOrMoreKeys()
   at Microsoft.PowerShell.PSConsoleReadLine.ReadKeyThreadProc()
   at System.Threading.Thread.StartHelper.Callback(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Thread.StartCallback()

@flit
Copy link
Member

flit commented Dec 7, 2021

@elfmimi Thanks for trying to understand this! I don't use either Windows or PowerShell regularly (except for testing), so I have limited knowledge to try and fix it. Fwiw, I tried installing PowerShell 7.2 on macOS 11.6.1, but (of course) pyocd list doesn't cause a crash.

The exception log above is both interesting and strange. How does pyocd affect reading a key after it exits? You didn't have to type a key before PowerShell crashed, did you?

The one that's really weird is pyocd json. It just does normal Python print()s to output.

@elfmimi
Copy link

elfmimi commented Dec 18, 2021

I've made some progress. I was poking around the source code and noticed that pyocd-pemicro is related in someway.
When I excluded PEMicroProbe from being used by means of modifying the source code, then pyocd worked ok within PowerShell.

To achieve that in moderate manner , one needs to follow these steps.

This is not recommended but if you are using pyocd package installed by pip command, here is how to tweak it.
uninstall pyocd-pemicro by pip uninstall pyocd-pemicro and then
edit site-packages/pyocd-0.32.2.dist-info/METADATA to remove the following line from it.
Requires-Dist: pyocd-pemicro (>=1.0.6)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants