Title: SIGSEGV on shutdown of tests · Issue #1830 · pythonnet/pythonnet · GitHub
Open Graph Title: SIGSEGV on shutdown of tests · Issue #1830 · pythonnet/pythonnet
X Title: SIGSEGV on shutdown of tests · Issue #1830 · pythonnet/pythonnet
Description: Environment Pythonnet version: 3.0.0.a2 Python version: 3.10.4 (locally, 3.8 through 3.10 in GitHub actions) Operating System: Ubuntu 22.04 (works find under Windows) .NET Runtime: Details Describe what you were trying to get done. In se...
Open Graph Description: Environment Pythonnet version: 3.0.0.a2 Python version: 3.10.4 (locally, 3.8 through 3.10 in GitHub actions) Operating System: Ubuntu 22.04 (works find under Windows) .NET Runtime: Details Describe...
X Description: Environment Pythonnet version: 3.0.0.a2 Python version: 3.10.4 (locally, 3.8 through 3.10 in GitHub actions) Operating System: Ubuntu 22.04 (works find under Windows) .NET Runtime: Details Describe...
Opengraph URL: https://github.com/pythonnet/pythonnet/issues/1830
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"SIGSEGV on shutdown of tests","articleBody":"### Environment\r\n\r\n- Pythonnet version: 3.0.0.a2\r\n- Python version: 3.10.4 (locally, 3.8 through 3.10 in GitHub actions)\r\n- Operating System: Ubuntu 22.04 (works find under Windows)\r\n- .NET Runtime:\r\n\r\n### Details\r\n\r\n- Describe what you were trying to get done.\r\n\r\n 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.\r\n\r\n- What commands did you run to trigger this issue? If you can provide a\r\n [Minimal, Complete, and Verifiable example](http://stackoverflow.com/help/mcve)\r\n this will help us understand the issue.\r\n\r\n Starting with one of the simpler projects, reducing it down a simple test case that reproduces the code.\r\n\r\n * `src/acme`\r\n * `dlls/netstandard2.0`\r\n * There were other DLLs from the results of a csproj build, but to reproduce this error only `Microsoft.Extensions.Logging.Abstractions.dll` is needed.\r\n * `python_logger_working.py`\r\n ```python\r\n \"\"\"Implementation of PythonLogger.\"\"\"\r\n import logging\r\n import os\r\n import sys\r\n import clr # type: ignore\r\n \r\n sys.path.append(os.path.join(os.path.dirname(__file__), \"dlls/netstandard2.0\"))\r\n clr.AddReference(r\"Microsoft.Extensions.Logging.Abstractions\")\r\n \r\n from Microsoft.Extensions.Logging import LogLevel # type: ignore\r\n \r\n \r\n def get_python_level(log_level: LogLevel) -\u003e int:\r\n \"\"\"Get the equivalent python logging level for a .NET LogLevel.\"\"\"\r\n python_level: int = logging.CRITICAL\r\n if log_level == getattr(LogLevel, \"None\"):\r\n python_level = logging.NOTSET\r\n elif log_level == LogLevel.Trace:\r\n # Python has no trace level, so we return the level right below debug as trace.\r\n python_level = logging.DEBUG - 1\r\n elif log_level == LogLevel.Debug:\r\n python_level = logging.DEBUG\r\n elif log_level == LogLevel.Information:\r\n python_level = logging.INFO\r\n elif log_level == LogLevel.Warning:\r\n python_level = logging.WARN\r\n elif log_level == LogLevel.Error:\r\n python_level = logging.ERROR\r\n return python_level\r\n ```\r\n * `tests`\r\n * `test_python_logger.py`\r\n ```python\r\n import logging\r\n import pytest\r\n \r\n import clr\r\n from src.acme.python_logger_working import get_python_level\r\n \r\n clr.AddReference(r\"Microsoft.Extensions.Logging.Abstractions\")\r\n from Microsoft.Extensions.Logging import LogLevel\r\n \r\n \r\n @pytest.mark.parametrize(\r\n \"dotnet_level,expected_level\",\r\n [\r\n pytest.param(LogLevel.Critical, logging.CRITICAL),\r\n pytest.param(LogLevel.Error, logging.ERROR),\r\n pytest.param(LogLevel.Warning, logging.WARNING),\r\n pytest.param(LogLevel.Information, logging.INFO),\r\n pytest.param(LogLevel.Debug, logging.DEBUG),\r\n pytest.param(LogLevel.Trace, logging.DEBUG - 1)\r\n ]\r\n )\r\n def test_get_python_level(dotnet_level, expected_level) -\u003e None:\r\n result = get_python_level(dotnet_level)\r\n \r\n # Verify\r\n assert( result == expected_level)\r\n ```\r\n\r\n- Workarounds and addition scenarios follow in comments.\r\n","author":{"url":"https://github.com/potterphx","@type":"Person","name":"potterphx"},"datePublished":"2022-06-22T17:36:50.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":8},"url":"https://github.com/1830/pythonnet/issues/1830"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:db45d193-4cb3-8356-c855-4d7803788f7f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | AEDC:3BF22F:129CC06:1A15944:6970CC76 |
| html-safe-nonce | 32f5bc20aea101fa2f65d67c1a4fc6ef2bbcc386c85d8e8dc565e53e09790020 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBRURDOjNCRjIyRjoxMjlDQzA2OjFBMTU5NDQ6Njk3MENDNzYiLCJ2aXNpdG9yX2lkIjoiMjgxNzY5OTI0NzQ3MTc3NDgzOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 922dab0bffc82e0c7db7688b4d6bbe160d53c768bfffa13675e989604cd0b25f |
| hovercard-subject-tag | issue:1280618618 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/pythonnet/pythonnet/1830/issue_layout |
| twitter:image | https://opengraph.githubassets.com/2908ab79bca1b74a15110c68b01c629e636fe87b5685772da691316f4849786e/pythonnet/pythonnet/issues/1830 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/2908ab79bca1b74a15110c68b01c629e636fe87b5685772da691316f4849786e/pythonnet/pythonnet/issues/1830 |
| og:image:alt | Environment Pythonnet version: 3.0.0.a2 Python version: 3.10.4 (locally, 3.8 through 3.10 in GitHub actions) Operating System: Ubuntu 22.04 (works find under Windows) .NET Runtime: Details Describe... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | potterphx |
| hostname | github.com |
| expected-hostname | github.com |
| None | 721764876e433c894814212f8100f6610f1dde78a987acc2e385d8be8e170e9c |
| turbo-cache-control | no-preview |
| go-import | github.com/pythonnet/pythonnet git https://github.com/pythonnet/pythonnet.git |
| octolytics-dimension-user_id | 6050430 |
| octolytics-dimension-user_login | pythonnet |
| octolytics-dimension-repository_id | 14748123 |
| octolytics-dimension-repository_nwo | pythonnet/pythonnet |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 14748123 |
| octolytics-dimension-repository_network_root_nwo | pythonnet/pythonnet |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 6ff3d08f4ee1c3f89ebedf4df8fc8fe851190294 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width