Title: Investigate asyncio compiler error · Issue #6736 · RustPython/RustPython · GitHub
Open Graph Title: Investigate asyncio compiler error · Issue #6736 · RustPython/RustPython
X Title: Investigate asyncio compiler error · Issue #6736 · RustPython/RustPython
Description: Summary Originally reported from: #6601 (comment) Details written by @terryluan12 As an update, I've narrowed down the hang to an issue in the wait method of the Condition class. I think it's an issue with the AST generation? (but not 10...
Open Graph Description: Summary Originally reported from: #6601 (comment) Details written by @terryluan12 As an update, I've narrowed down the hang to an issue in the wait method of the Condition class. I think it's an is...
X Description: Summary Originally reported from: #6601 (comment) Details written by @terryluan12 As an update, I've narrowed down the hang to an issue in the wait method of the Condition class. I think it'...
Opengraph URL: https://github.com/RustPython/RustPython/issues/6736
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Investigate asyncio compiler error","articleBody":"## Summary\n\nOriginally reported from: https://github.com/RustPython/RustPython/pull/6601#issuecomment-3713073297\n\n\u003c!-- Short description of the issue. --\u003e\n\n## Details\n\n\u003c!-- Whatever you want to share --\u003e\n\nwritten by @terryluan12 \n\n----\n\nAs an update, I've narrowed down the hang to an issue in the wait method of the Condition class. I **think** it's an issue with the AST generation? (but not 100%)\n\nThe test that is failing is `test_locks.ConditionTests.test_cancelled_error_re_aquire`\nThe relevant function is below\n\n```python\n\nasync def wait(self):\n \"\"\"Wait until notified.\n\n If the calling task has not acquired the lock when this\n method is called, a RuntimeError is raised.\n\n This method releases the underlying lock, and then blocks\n until it is awakened by a notify() or notify_all() call for\n the same condition variable in another task. Once\n awakened, it re-acquires the lock and returns True.\n\n This method may return spuriously,\n which is why the caller should always\n re-check the state and be prepared to wait() again.\n \"\"\"\n if not self.locked():\n raise RuntimeError('cannot wait on un-acquired lock')\n\n fut = self._get_loop().create_future()\n self.release()\n try:\n try:\n self._waiters.append(fut)\n try:\n await fut # A) It reaches here fine\n return True\n finally:\n self._waiters.remove(fut)\n\n finally:\n # Must re-acquire lock even if wait is cancelled.\n # We only catch CancelledError here, since we don't want any\n # other (fatal) errors with the future to cause us to spin.\n err = None\n while True: # B) The code enters a loop here to reacquire the lock\n try:\n await self.acquire() # C) While waiting here, the task is cancelled\n break\n except exceptions.CancelledError as e:\n err = e # D) The code reaches here fine\n\n if err is not None:\n try:\n raise err # E) The error is reraised here\n finally:\n err = None # F) It reaches here\n except BaseException:\n self._notify(1) # G) It is supposed to exit here\n raise\n```\n\nWhereas in CPython, the program is supposed to go from F) to G), RustPython instead goes from F) to B), re-entering the final statement again (reaquiring the lock again at C), reaching a deadlock state, and hanging.","author":{"url":"https://github.com/youknowone","@type":"Person","name":"youknowone"},"datePublished":"2026-01-15T08:32:56.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/6736/RustPython/issues/6736"}
| 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:fc026e46-ae72-6e07-0f50-f725f435e49f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | CEA8:193CDB:1D93A29:268F425:696B39E5 |
| html-safe-nonce | 04d8aaaa968c1ce351efb81b15c2ee0548e9148b731e5f8f0ad4dcb183303289 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDRUE4OjE5M0NEQjoxRDkzQTI5OjI2OEY0MjU6Njk2QjM5RTUiLCJ2aXNpdG9yX2lkIjoiMzc2MDQ1NzQ5Njc5NDk3MDU5NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ea79734fb1a884a3a2222712e74c40c21c8ee3f50477af7210c7716a7e23debf |
| hovercard-subject-tag | issue:3816532550 |
| 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/RustPython/RustPython/6736/issue_layout |
| twitter:image | https://opengraph.githubassets.com/b2da67096beca6167c47eda8810bcd9ab87dc252c5049301bf2528a7a1f5f949/RustPython/RustPython/issues/6736 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/b2da67096beca6167c47eda8810bcd9ab87dc252c5049301bf2528a7a1f5f949/RustPython/RustPython/issues/6736 |
| og:image:alt | Summary Originally reported from: #6601 (comment) Details written by @terryluan12 As an update, I've narrowed down the hang to an issue in the wait method of the Condition class. I think it's an is... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | youknowone |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5f99f7c1d70f01da5b93e5ca90303359738944d8ab470e396496262c66e60b8d |
| turbo-cache-control | no-preview |
| go-import | github.com/RustPython/RustPython git https://github.com/RustPython/RustPython.git |
| octolytics-dimension-user_id | 39710557 |
| octolytics-dimension-user_login | RustPython |
| octolytics-dimension-repository_id | 135201145 |
| octolytics-dimension-repository_nwo | RustPython/RustPython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 135201145 |
| octolytics-dimension-repository_network_root_nwo | RustPython/RustPython |
| 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 | 82560a55c6b2054555076f46e683151ee28a19bc |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width