From 467403362d1819acc96663e52dbeb2994f76aea4 Mon Sep 17 00:00:00 2001 From: S-trace Date: Thu, 16 Jan 2020 23:59:36 +0300 Subject: [PATCH] core: ConstStorage: Use ConcurrentHashMap for values map in ValueStorage Exception in thread "pool-9-thread-7" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445) at java.util.HashMap$EntryIterator.next(HashMap.java:1479) at java.util.HashMap$EntryIterator.next(HashMap.java:1477) at jadx.core.dex.info.ConstStorage$ValueStorage.removeForCls(ConstStorage.java:61) at jadx.core.dex.info.ConstStorage.removeForClass(ConstStorage.java:100) at jadx.core.dex.nodes.ClassNode.deepUnload(ClassNode.java:290) at jadx.core.dex.nodes.ClassNode.deepUnload(ClassNode.java:295) at jadx.core.dex.nodes.ClassNode.reloadCode(ClassNode.java:284) at jadx.api.JavaClass.refresh(JavaClass.java:62) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) --- jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java b/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java index ca9db0171..6385ec5da 100644 --- a/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import org.jetbrains.annotations.Nullable; @@ -23,7 +24,7 @@ import jadx.core.utils.ErrorsCounter; public class ConstStorage { private static final class ValueStorage { - private final Map values = new HashMap<>(); + private final Map values = new ConcurrentHashMap<>(); private final Set duplicates = new HashSet<>(); public Map getValues() {