GeneratorExit Exception when debugging any() line - python-3.x

I am getting the Exception has occurred: GeneratorExit message only when debugging (in VSCode).
anyIsTitle = any(word.istitle() for word in ['notitle', 'Title'])
The problem is with any(). It runs fine when not using it, say with a normal for loop. I am also loading some heavy stuff into memory while on this line.
Can someone explain why this could be happening?

Related

Stack Trace is missing for uncaught python exceptions

I'm using Python 3.7.3 and runtime exceptions are suddenly generating the following type of error instead of the usual, handy stack trace.
(<class 'NameError'>, NameError("name 'window' is not defined"), <traceback object at 0x24857260>)
If I can't find the error based on the object name, I'm forced to add a bunch of print statements to isolate it. This is sub-optimum. I initially contacted PyCharm support regarding this but it's related to the Python instance and not the IDE so they were no help other than to tell me to "Google it". Most of what I've found on line tells me how to catch explicit exceptions via a try-catch block. But that would force me to add a bunch of try-catch blocks everywhere which were never required before when runtime errors simply spit out a stack trace complete with module and line numbers. I suspect there is some way of resolving the module/line based on the hex traceback address? But I just want my trusty stack trace back! Thanks!
Simply surrounding the code of the main module as follows fixed the first problem.
try:
app = QApplication(sys.argv)
app.setFont(QFont('SansSerif', 12))
window = MyWindow()
...
except Exception as e:
print(traceback.format_exc())
I now get stack traces on runtime errors.
Thanks,
Jeff

create exception when python command generates a program.exe has stopped working type error

I am facing a problem with a program i am developing in Python 3.6 under Windows 10.
One particular command generates an unknown error, windows throws a 'program.exe has stopped working' message and the program exits.
The command is a 3d-model loader that is part of another python package (Panda3D). The crash is always associated with this command (and more particularly with a specific dll of the loader) and a particular file that it tries to open.
Since i cannot locate and therefore solve the faults in the dll (probably there is a bug there) i would like to just pass the problematic file and continue to the next one. But since python exits and i do not know the error type, the typical try, except does not work.
So, i would like to know if there is a way to predict this type of behavior in my code and prevent the program from exiting.
Many thanks for any help.
The pop-up "Program.exe has stopped working." can be caused by a variety of things and therefor there is no "one size fits all" type solution. But if you're certain that your problem is cause by a specific line of code you can always try something along the lines of :
try:
loader.loadModel("c/path/to/your/file")
except Exception as e:
print(e.message, e.args)
# your error-handling code here
Make sure the file path that you're giving to loadModel respects the following :
# WRONG:
loader.loadModel("c:\\Program Files\\My Game\\Models\\Model1.egg")
# RIGHT:
loader.loadModel("/c/Program Files/My Game/Models/Model1.egg")
Source : pandas3d official documentation

How to avoid fatal error or unknown error in powershell on windows server 2016

Sometimes i get unknow error in powershell on windows server 2016, every time this error have random behavior, but every time is "Fatal error", like on screenshot.
Screen_Shot
Unknown type: 541
#
# Fatal error in, line 0
# unreachable code
#
#
#
#FailureMessage Object: 0000007BD8BFF1F0
What is that and how to fix this? I launch node.js on this server
Memory leak? Disc error?
P.S. on Linux server i dont have any errors, but i need to launch my code on Windows server 2016. Sorry if my question was stupid or is a duplicate.
Does in your code you've setup something like :
$ErrorActionPreference = Stop
This will stop your process at any errors; anyway the best practice is to use the try/catch block to handle any error and , at least, display where and what is the error message.
In your case, I suspect there is a bad memory access or conflict with something but without more details it's pretty difficult.
Do you use in your script the try and catch block ?
I found that problem spot - CPU.

KeyError when adding to set in Python

I ran my program in Python 3.4, and it crashed. Stack trace:
Traceback (most recent call last):
[...]
File [...], line 176, in manual_setup
gammas.add((name, group_oid))
KeyError: '5733455d-ba37-48c6-b550-8f53b719310c'
Here's the code at that line. Never mind what the variables are, just that gammas is a set, as you can see:
gammas = set()
for group_oid, name, _ in self.tags:
gammas.add((name, group_oid))
By the way, name and group_oid are both str, but even if they were something unhashable, I'd get a different error.
I'm not excluding the possibility that I have something totally different going on, but before I look into weird causes I haven't even thought of yet, I'd like to know if set.add could possibly be throwing KeyError. The documentation suggests no. My knowledge of how sets work says it shouldn't. Has anyone out there seen this happen?
I checked to see if set was somehow overridden. PyCharm says it's the built-in Python set.
The only set operations that generate a KeyError are pop on an empty set and remove for an element that isn't in the set. add can't generate a KeyError.
My first guess would be that this exception is coming from the __hash__ method of name or group_oid. Inspecting those objects in a debugger could be informative. There's also the possibility it's coming from an __eq__ method.
Somehow, the Python interpreter was outputting the wrong line number and accompanying code for the error. The error was a few lines above. I should've guessed... Maybe I changed the code while it was running (How can the line numbers in my stack traces be wrong?), but I don't think I did. Anyway, it's not happening anymore.
P.S. I didn't immediately re-run and catch it because the script takes a long time to reach that point again.

WinRT - Windows Store - WinRT Originate Error - How do decipher such an error?

I'm working on a Windows Store app and I'm getting a WinRT error that doesn't really give me any information so I would like to know how to understand these sorts of errors.
Basically I get the error on the following line which is called inside OnPointerPressed:
m_gestureRecognizer->ProcessDownEvent(args->GetCurrentPoint(nullptr));
The error is:
First-chance exception at 0x76F54B32 (KernelBase.dll) in DXAML2.exe: 0x40080201: WinRT originate error (parameters: 0x80070057, 0x00000044, 0x03CEE72C).
This error didn't used to appear, the only thing I've changed is that this line is now wrapped in an if clause which tests if the current pointer's PointerId is the same as one I've stored just using == such as:
if(args->GetCurrentPoint(nullptr)->PointerId == m_UIPointerID)
I have no idea why this has started happening.
So my question is in two parts:
More generally, how do I understand what an error such as the above means?
And does anyone know this error has suddenly started happening now that I check the pointerId?
Thanks for your time.
P.S. I guess another thing that has changed is that there will already be 2 pointers on the screen (the one that gets pushed into this GestureRecognizer) as well as another one, hence the PointerId check.
"How to Decipher such an error"...
For any WinRT originate error, you can take the third address in the parameters list (in your example, 0x03CEE72C), and find a description of your error in the memory window.
While debugging, break when your error is thrown and open the memory window via Debug -> Windows -> Memory -> Memory 1
Copy and paste the address to get your "easy-to-find" error message.
As Raman said - it's good to look up the hex values shown. The first one is the memory location which won't tell you much without the symbols/source, which in this case is reported directly by Windows. Perhaps the public symbols can shed some more light on where the error came from, but the error code lookups are more helpful.
If you Bing for 0x80070057 you will find an MSDN article on Common HRESULT Values which lists
E_INVALIDARG : One or more arguments are not valid : 0x80070057
It doesn't give you all the details of course, so you're off to theorize. Perhaps you can only call args->GetCurrentPoint(nullptr) once and you should store/reuse the value? Maybe gesture recognizer is not configured correctly? Maybe the app window is not visible at the time the exception is thrown or the thread is wrong. Maybe some expected calls to gesture recognizer were missed due to filtering those out with these "if" statements.

Resources