-
Notifications
You must be signed in to change notification settings - Fork 748
SIGSEGV on shutdown of tests #1830
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
Comments
One can avoid the SIGSEGV fault by transforming the
|
Rewriting __dotnet_to_python = {
getattr(LogLevel, "None"): logging.NOTSET,
# Python has no trace level, so we return the level right below debug as trace.
LogLevel.Trace: logging.DEBUG - 1,
LogLevel.Debug: logging.DEBUG,
LogLevel.Information: logging.INFO,
LogLevel.Warning: logging.WARN,
LogLevel.Error: logging.ERROR,
}
def get_python_level(log_level: LogLevel) -> int:
global __dotnet_to_python
return __dotnet_to_python.get(log_level, logging.CRITICAL) One can work around this issue by adding an def __at_exit():
global __dotnet_to_python
__dotnet_to_python = None
atexit.register(__at_exit) |
Using the second modification from the first comment to avoid the issue in the test file, and the first modification from the second comment to have the issue be caused from the code, I then added to the test file a main so that the tests could be run without pytest. if __name__ == '__main__':
print("START")
test_get_python_level_critical()
test_get_python_level_error()
test_get_python_level_warning()
test_get_python_level_information()
test_get_python_level_debug()
test_get_python_level_trace()
print("END") Directly running this also generated the SIGSEGV fault, thus demonstrating that pytest is not a requirements to reproduce the issue. |
As soon as I finished the above write-up I thought of a simpler case:
'''Very simple test case.'''
import clr # type: ignore
from System import Object
__bad_magic: Object = Object()
def test_something():
assert True |
|
"rather old", it is the latest alpha release. 😁 Sorry, sarcasm slipped out. Updating to current latest master (3.0.0.dev1 43d1640), and all the cases documented above no longer generated a SIGSEGV. Thanks. Any ETA on another alpha? |
@filmor can you publish a3 on pypi? That was a nasty bug we fixed. And the latest (a2) is from Dec 2021. |
I'll finish up #1817 today (at least structurally) and release it as rc1. |
Environment
Details
Describe what you were trying to get done.
In several new projects, unit tests running fine under Windows, but when run under Ubuntu would would fail. On examining closer found that the unit tests all ran and passed, but there would be a SIGSEGV fault during shutdown. In chasing down possibly causes of the issue, the most common trigger appeared to a having a variable at the module level of .Net Type or of a Python container type which contained a .Net type.
What commands did you run to trigger this issue? If you can provide a
Minimal, Complete, and Verifiable example
this will help us understand the issue.
Starting with one of the simpler projects, reducing it down a simple test case that reproduces the code.
src/acme
dlls/netstandard2.0
Microsoft.Extensions.Logging.Abstractions.dll
is needed.python_logger_working.py
tests
test_python_logger.py
Workarounds and addition scenarios follow in comments.
The text was updated successfully, but these errors were encountered: