Error when decompiling loop inside if-else
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- python
調査の方向性
Reproduce the issue from the shown code.py by running python3 -m compileall . and decompiling the generated Python 3.8 pyc. Start by tracing how the decompiler handles the JUMP_FORWARD at offset 10 and its COME_FROM entries; done means the loop inside the if-else decompiles without a parse error.
索引モデルが issue の本文から書いたものです。
説明
I was trying to decompile a pyc that I had, but it had a few errors. I managed to manually decompile it though and narrowed it down to code that looks like this:
def func(val):
if val == 0:
while True:
pass
else:
pass
When I compile this with python3 -m compileall . and then attempt to decompile, I get a 'parse error':
# uncompyle6 version 3.7.2
# Python bytecode 3.8 (3413)
# Decompiled from: Python 3.7.7 (default, Jun 28 2020, 13:00:53)
# [GCC 9.3.0]
# Embedded file name: ./code.py
# Compiled at: 2020-06-28 16:30:43
# Size of source mod 2**32: 92 bytes
Instruction context:
L. 4 8 JUMP_BACK 8 'to 8'
-> 10 JUMP_FORWARD 12 'to 12'
12_0 COME_FROM 10 '10'
def func--- This code section failed: ---
L. 2 0 LOAD_FAST 'val'
2 LOAD_CONST 0
4 COMPARE_OP ==
6 POP_JUMP_IF_FALSE 12 'to 12'
L. 4 8 JUMP_BACK 8 'to 8'
10 JUMP_FORWARD 12 'to 12'
12_0 COME_FROM 10 '10'
12_1 COME_FROM 6 '6'
Parse error at or near `JUMP_FORWARD' instruction at offset 10
# file __pycache__/code.cpython-38.pyc
# Deparsing stopped due to parse error
Here is the disassembly of that code:
1 0 LOAD_CONST 0 (<code object func at 0x7ffac2d20b30, file "code.py", line 1>)
2 LOAD_CONST 1 ('func')
4 MAKE_FUNCTION 0
6 STORE_NAME 0 (func)
8 LOAD_CONST 2 (None)
10 RETURN_VALUE
Disassembly of <code object func at 0x7ffac2d20b30, file "code.py", line 1>:
2 0 LOAD_FAST 0 (val)
2 LOAD_CONST 1 (0)
4 COMPARE_OP 2 (==)
6 POP_JUMP_IF_FALSE 12
4 >> 8 JUMP_ABSOLUTE 8
10 JUMP_FORWARD 0 (to 12)
6 >> 12 LOAD_CONST 0 (None)
14 RETURN_VALUE
Hopefully this issue can be fixed!
- 主要言語
- Python
- スター
- 4.3k
- フォーク
- 465
- 平均マージ
- 4日 11時間
- マージ済み PR(30日)
- 3
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
rocky/python-uncompyle6 のほかの issue
-
Works on decompyle3
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
rocky/python-uncompyle6#506 · コメント 1 件 ·
-
Python 3.8 Volunteer wanted Works on decompyle3
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
rocky/python-uncompyle6#492 · コメント 4 件 ·
-
Redundant "else:"オープンControl Flow Python 3.8 Volunteer wanted Works on decompyle3
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
rocky/python-uncompyle6#486 ·
-
Missing "While True"オープンControl Flow Python 3.8 Volunteer wanted Works on decompyle3
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
rocky/python-uncompyle6#485 · コメント 4 件 ·
-
Duplicate Python 3.9+
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
rocky/python-uncompyle6#484 · リアクション 9 件 ·
rocky/python-uncompyle6 の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
NousResearch/hermes-agent#136483 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
[BUG] LazyStackedTensorDictStore zeroes the last byte of a new key set on the last element対応中かも @peterdsharpe が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
pytorch/tensordict#2307 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
GrokModel.generate/a_generate pass an OpenAI-style list-of-dicts to xai_sdk.chat.user(), so every call crashes with a protobuf TypeError before any network I/O対応中かも @Christian-Sidak が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
confident-ai/deepeval#3436 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信