skylot / jadx

Dex to Java decompiler
Apache License 2.0
41.4k stars 4.85k forks source link

[core] open class doesn't reload after using rename #1204

Open He1my opened 3 years ago

He1my commented 3 years ago

When renaming sometimes jadx-gui doesn't reload the code with the following error this usually happens after renaming multiple times tested nightly build jadx-1.2.0.90-b5720bd1

WARN - Removed duplicated region for block: B:173:0x0687 in method: com.lguplus.homeiot.ui.devicepairing.softapdevice.onem2m.SoftApOneM2MPairingActivity.PairingHandler.handleMessage(android.os.Message):void, file: classes.dex WARN - Removed duplicated region for block: B:173:0x0687 in method: com.lguplus.homeiot.ui.devicepairing.softapdevice.onem2m.SoftApOneM2MPairingActivity.PairingHandler.handleMessage(android.os.Message):void, file: classes.dex WARN - Removed duplicated region for block: B:137:0x0507 in method: com.lguplus.homeiot.ui.devicepairing.softapdevice.onem2m.SoftApOneM2MPairingActivity.PairingHandler.handleMessage(android.os.Message):void, file: classes.dex WARN - Removed duplicated region for block: B:131:0x04b7 in method: com.lguplus.homeiot.ui.devicepairing.softapdevice.onem2m.SoftApOneM2MPairingActivity.PairingHandler.handleMessage(android.os.Message):void, file: classes.dex ERROR - Failed to reload class: com.lguplus.homeiot.ui.devicepairing.softapdevice.onem2m.SoftApOneM2MPairingActivity java.lang.NullPointerException: Cannot invoke "jadx.api.JavaClass.getTopParentClass()" because "this.cls" is null at jadx.api.JavaVariable.getTopParentClass(JavaVariable.java:38) at jadx.gui.utils.CodeUsageInfo.lambda$remove$2(CodeUsageInfo.java:81) at java.base/java.util.concurrent.ConcurrentHashMap.removeEntryIf(ConcurrentHashMap.java:1640) at java.base/java.util.concurrent.ConcurrentHashMap$EntrySetView.removeIf(ConcurrentHashMap.java:4836) at jadx.gui.utils.CodeUsageInfo.remove(CodeUsageInfo.java:80) at jadx.gui.jobs.IndexService.refreshIndex(IndexService.java:60) at jadx.gui.ui.codearea.CodeArea.refreshClass(CodeArea.java:224) at jadx.gui.ui.RenameDialog.refreshTabs(RenameDialog.java:261) at jadx.gui.ui.RenameDialog.refreshState(RenameDialog.java:214) at jadx.gui.ui.RenameDialog.rename(RenameDialog.java:158) at jadx.gui.ui.RenameDialog.lambda$initButtonsPanel$4(RenameDialog.java:271) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6379) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117) at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233) at java.base/java.security.AccessController.doPrivileged(AccessController.java:312) at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233) at java.desktop/java.awt.Dialog.show(Dialog.java:1070) at java.desktop/java.awt.Component.show(Component.java:1717) at java.desktop/java.awt.Component.setVisible(Component.java:1664) at java.desktop/java.awt.Window.setVisible(Window.java:1028) at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1005) at jadx.gui.ui.RenameDialog.rename(RenameDialog.java:75) at jadx.gui.ui.codearea.RenameAction.showRenameDialog(RenameAction.java:50) at jadx.gui.ui.codearea.RenameAction.actionPerformed(RenameAction.java:62) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:369) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1012) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1056) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6379) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

He1my commented 3 years ago

Tested multiple APKS, this issue seems to accrue on only some of them and on some classes in particular
http://107.191.126.128/apk.zip