Storyyeller / Krakatau

Java decompiler, assembler, and disassembler
GNU General Public License v3.0
1.97k stars 220 forks source link

IndexError: pop from empty list #34

Closed yolapop closed 10 years ago

yolapop commented 10 years ago
processing target com/actionbarsherlock/internal/nineoldandroids/animation/Value
Animator$AnimationHandler, 6861 remaining
Decompiling method <init> ()V
Decompiling method <init> (Lcom/actionbarsherlock/internal/nineoldandroids/anima
tion/ValueAnimator$1;)V
Decompiling method handleMessage (Landroid/os/Message;)V
Traceback (most recent call last):
  File "Krakatau\decompile.py", line 147, in <module>
    decompileClass(path, targets, args.out, plugins, args.skip)
  File "Krakatau\decompile.py", line 89, in decompileClass
    source = javaclass.generateAST(c, makeGraph).print_()
  File "C:\Krakatau\Krakatau\java\javaclass.py", line 69, in generateAST
    method_defs = [_getMethod(m, cb, forbidden_identifiers) for m in methods]
  File "C:\Krakatau\Krakatau\java\javaclass.py", line 41, in _getMethod
    code_ast = javamethod.generateAST(method, graph, forbidden_identifiers)
  File "C:\Krakatau\Krakatau\java\javamethod.py", line 746, in generateAST
    setree = structuring.structure(entryNode, nodes, (method.name == '<clinit>')
)
  File "C:\Krakatau\Krakatau\java\structuring.py", line 1224, in structure
    croot, ctree_children = orderConstraints(dom, constraints, nodes)
  File "C:\Krakatau\Krakatau\java\structuring.py", line 475, in orderConstraints

    cnode, svals = cscope_assigns.pop() #choose candidate arbitrarily if more th
an 1
IndexError: pop from empty list
Storyyeller commented 10 years ago

Could you please provide the jar that triggered the error?

yolapop commented 10 years ago

https://www.dropbox.com/s/wno76d8ykqi9s29/Path.jar

Storyyeller commented 10 years ago

Ok, I've reproduced the error. I'll see if I can figure out what the problem is.

yolapop commented 10 years ago

Thanks..

I have a newbie question if you don't mind: what is the difference between this decompiler and JD Decompiler (jd.benow.ca)? I use JD and it doesn't require android jars.

Storyyeller commented 10 years ago

They have different codebases. Krakatau is much better, in that it can decompile more types of code (especially obfuscated code) and produce more unobfuscated results.

Storyyeller commented 10 years ago

It should be fixed now.

TkTech commented 10 years ago

Resolved in bb7fcab2511f3af7eed7f0fe8a25e7778cf31e6a (referencing the commit)