ASSERTs : ARM Android debug build fail for Youtube APK
Created by: sudakshina-das-arm
I am creating a separate issue specifically for the debug build from #2465 (closed) The debug build with the Youtube APK crashes unreliably and gives out either of the following 2 report
07-03 14:32:09.565 I/wrap.sh ( 4940): <Starting application /system/bin/app_process32 (4941)>
07-03 14:32:09.571 I/wrap.sh ( 4940): <Paste into GDB to debug DynamoRIO clients:
07-03 14:32:09.571 I/wrap.sh ( 4940): set confirm off
07-03 14:32:09.571 I/wrap.sh ( 4940): add-symbol-file '/data/local/tmp/DynamoRIO/lib32/debug/libdynamorio.so' 0xb6ce5350
07-03 14:32:09.571 I/wrap.sh ( 4940): >
07-03 14:32:09.586 I/wrap.sh ( 4940): <Initial options = -no_dynamic_options -code_api -no_use_all_memory_areas -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -early_inject -emulate_brk -no_inline_ignored_syscalls -native_exec_default_list '' -no_native_exec_managed_code -no_indcall2direct >
07-03 14:32:24.299 I/wrap.sh ( 4940): <unhandled signal system call 177>
07-03 14:32:37.914 I/wrap.sh ( 4940): referenceTable GDEF length=814 1
07-03 14:32:37.937 I/wrap.sh ( 4940): referenceTable GSUB length=11364 1
07-03 14:32:38.003 I/wrap.sh ( 4940): referenceTable GPOS length=47302 1
07-03 14:32:44.394 I/wrap.sh ( 4940): <-- parent 4941 forked child 4995 -->
07-03 14:32:44.882 I/wrap.sh ( 4940): <Stopping application /system/bin/app_process32 (4995)>
07-03 14:33:10.883 I/wrap.sh ( 4940): <Application /system/bin/app_process32 (4941). Internal Error: DynamoRIO debug check failure: dynamorio/core/vmareas.c:1482 !(((((VECTOR_SHARED) & ((v)->flags)) != 0) && !(((VECTOR_NO_LOCK) & ((v)->flags)) != 0) && !self_owns_write_lock(&(v)->lock)) && !dynamo_exited) || READWRITE_LOCK_HELD(&(v)->lock)
07-03 14:33:10.883 I/wrap.sh ( 4940): (Error occurred @127719 frags)
07-03 14:33:10.883 I/wrap.sh ( 4940): version 6.2.17294, custom build
07-03 14:33:10.883 I/wrap.sh ( 4940): -no_dynamic_options -code_api -no_use_all_memory_areas -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -early_inject -emulate_brk -no_inline_ignored_syscalls -native_exec_default_list '' -no_native_exec_managed_code -no_indcall2direct
07-03 14:33:10.883 I/wrap.sh ( 4940): 0xb6d9a7a9 0x78af04b0>
07-03 14:33:10.916 I/wrap.sh ( 4940): wrap.sh terminated by exit(255)
OR
07-03 12:35:02.130 I/wrap.sh ( 5148): <Starting application /system/bin/app_process32 (5149)>
07-03 12:35:02.137 I/wrap.sh ( 5148): <Paste into GDB to debug DynamoRIO clients:
07-03 12:35:02.137 I/wrap.sh ( 5148): set confirm off
07-03 12:35:02.137 I/wrap.sh ( 5148): add-symbol-file '/data/local/tmp/DynamoRIO/lib32/debug/libdynamorio.so' 0xb6d1e350
07-03 12:35:02.137 I/wrap.sh ( 5148): >
07-03 12:35:02.151 I/wrap.sh ( 5148): <Initial options = -no_dynamic_options -code_api -no_use_all_memory_areas -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -early_inject -emulate_brk -no_inline_ignored_syscalls -native_exec_default_list '' -no_native_exec_managed_code -no_indcall2direct >
07-03 12:35:16.859 I/wrap.sh ( 5148): <unhandled signal system call 177>
07-03 12:35:30.556 I/wrap.sh ( 5148): referenceTable GDEF length=814 1
07-03 12:35:30.580 I/wrap.sh ( 5148): referenceTable GSUB length=11364 1
07-03 12:35:30.646 I/wrap.sh ( 5148): referenceTable GPOS length=47302 1
07-03 12:35:36.892 I/wrap.sh ( 5148): <-- parent 5149 forked child 5183 -->
07-03 12:35:37.346 I/wrap.sh ( 5148): <Stopping application /system/bin/app_process32 (5183)>
07-03 12:35:55.949 I/wrap.sh ( 5148): <CURIOSITY : (app_pc)((((ptr_uint_t)addr+len) + ((os_page_size())-1)) & (~((ptr_uint_t)(os_page_size())-1))) == ma->end in file dynamorio/core/unix/os.c line 6729
07-03 12:35:55.961 I/wrap.sh ( 5148): version 6.2.17294, custom build
07-03 12:35:55.961 I/wrap.sh ( 5148): -no_dynamic_options -code_api -no_use_all_memory_areas -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -early_inject -emulate_brk -no_inline_ignored_syscalls -native_exec_default_list '' -no_native_exec_managed_code -no_indcall2direct
07-03 12:35:55.962 I/wrap.sh ( 5148): 0xb6dd37a9 0x78af04b0>
07-03 12:36:03.081 I/wrap.sh ( 5148): WARNING: linker: /data/app/com.google.android.gms-2/lib/arm/libconscrypt_gmscore_jni.so: unused DT entry: type 0x1d arg 0x1ed
07-03 12:37:25.360 I/wrap.sh ( 5148): <Application /system/bin/app_process32 (5149). Internal Error: DynamoRIO debug check failure: dynamorio/core/unix/signal.c:5682 sig > 0 && sig <= MAX_SIGNUM && IS_RT_FOR_APP(info, sig)
07-03 12:37:25.360 I/wrap.sh ( 5148): (Error occurred @254191 frags)
07-03 12:37:25.360 I/wrap.sh ( 5148): version 6.2.17294, custom build
07-03 12:37:25.360 I/wrap.sh ( 5148): -no_dynamic_options -code_api -no_use_all_memory_areas -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -early_inject -emulate_brk -no_inline_ignored_syscalls -native_exec_default_list '' -no_native_exec_managed_code -no_indcall2direct
07-03 12:37:25.360 I/wrap.sh ( 5148): 0xb6dd37a9 0x78af04b0
07-03 12:37:25.360 I/wrap.sh ( 5148): 0x9a43b0e9 0x432f7465>
07-03 12:37:25.722 I/wrap.sh ( 5148): wrap.sh terminated by exit(25
I have already used the following changes in my branch to get the debug build to not fail on issues that were mentioned in #2465 (closed) (@egrimley gave me the missing instruction changes in table_a32_unpred.c)
diff --git a/core/arch/arm/table_a32_unpred.c b/core/arch/arm/table_a32_unpred.c
index d8f150a..61b1059 100644
--- a/core/arch/arm/table_a32_unpred.c
+++ b/core/arch/arm/table_a32_unpred.c
@@ -298,11 +298,11 @@ const instr_info_t A32_ext_bit7[][2] = {
*/
const instr_info_t A32_ext_bit19[][2] = {
{ /* 0 */
- {EXT_SIMD8, 0xf2800000, "(ext simd8 0)", xx, xx, xx, xx, xx, no, x, 0},
- {EXT_SIMD5, 0xf2880000, "(ext simd5 0)", xx, xx, xx, xx, xx, no, x, 0},
+ {EXT_SIMD8, 0xf2800010, "(ext simd8 0)", xx, xx, xx, xx, xx, no, x, 0},
+ {EXT_SIMD5, 0xf2880010, "(ext simd5 0)", xx, xx, xx, xx, xx, no, x, 0},
}, { /* 1 */
- {EXT_SIMD8, 0xf3800000, "(ext simd8 1)", xx, xx, xx, xx, xx, no, x, 1},
- {EXT_SIMD5, 0xf3880000, "(ext simd5 1)", xx, xx, xx, xx, xx, no, x, 1},
+ {EXT_SIMD8, 0xf3800010, "(ext simd8 1)", xx, xx, xx, xx, xx, no, x, 1},
+ {EXT_SIMD5, 0xf3880010, "(ext simd5 1)", xx, xx, xx, xx, xx, no, x, 1},
},
};
@@ -1376,9 +1376,9 @@ const instr_info_t A32_ext_simd8[][80] = {
/* 0x70 */
{OP_vabdl_u8, 0xf3800700, "vabdl.u8", VBdq, xx, VAq, VCq, xx, no, x, END_LIST},
{OP_vorr_i32, 0xf3800710, "vorr.i32", VBq, xx, i12x8_24_16_0, xx, xx, no, x, DUP_ENTRY},
- {INVALID, 0xf3800730, "(bad)", xx, xx, xx, xx, xx, no, x, NA},
+ {OP_vbic_i32, 0xf3800730, "vbic.i32", VBq, xx, i12x8_24_16_0, xx, xx, no, x, DUP_ENTRY},
{OP_vorr_i32, 0xf3800750, "vorr.i32", VBdq, xx, i12x8_24_16_0, xx, xx, no, x, DUP_ENTRY},
- {INVALID, 0xf3800770, "(bad)", xx, xx, xx, xx, xx, no, x, NA},
+ {OP_vbic_i32, 0xf3800770, "vbic.i32", VBdq, xx, i12x8_24_16_0, xx, xx, no, x, DUP_ENTRY},
/* 0x80 */
{OP_vmlal_u8, 0xf3800800, "vmlal.u8", VBdq, xx, VAq, VCq, xx, no, x, END_LIST},
{OP_vmov_i16, 0xf3800810, "vmov.i16", VBq, xx, i12x8_24_16_0, xx, xx, no, x, DUP_ENTRY},
diff --git a/core/arch/interp.c b/core/arch/interp.c
index 569cba3..0d47b28 100644
--- a/core/arch/interp.c
+++ b/core/arch/interp.c
@@ -4075,7 +4075,7 @@ build_bb_ilist(dcontext_t *dcontext, build_bb_t *bb)
/* Until we're more confident in our decoder/encoder consistency this is
* at the default debug build -checklevel 2.
*/
- IF_ARM(DOCHECK(2, check_encode_decode_consistency(dcontext, bb->ilist);));
+ //IF_ARM(DOCHECK(2, check_encode_decode_consistency(dcontext, bb->ilist);));
#ifdef DR_APP_EXPORTS
/* changes by DR that are visible to clients */
diff --git a/core/unix/memcache.c b/core/unix/memcache.c
index 7777f38..fc9e09d 100644
--- a/core/unix/memcache.c
+++ b/core/unix/memcache.c
@@ -364,6 +364,7 @@ memcache_query_memory(const byte *pc, OUT dr_mem_info_t *out_info)
out_info->size = (end - start);
out_info->prot = info->prot;
out_info->type = info->type;
+#if 0
#ifdef HAVE_MEMINFO
DOCHECK(2, {
byte *from_os_base_pc;
@@ -410,6 +411,7 @@ memcache_query_memory(const byte *pc, OUT dr_mem_info_t *out_info)
}
});
#endif
+#endif
} else {
app_pc prev, next;
found = vmvector_lookup_prev_next(all_memory_areas, (app_pc)pc,
diff --git a/make/configure.cmake.h b/make/configure.cmake.h
index b8e26f3..dee996d 100644
--- a/make/configure.cmake.h
+++ b/make/configure.cmake.h
@@ -320,8 +320,8 @@
# define DEBUG_MEMORY
# define STACK_GUARD_PAGE
# define HEAP_ACCOUNTING
-# define DEADLOCK_AVOIDANCE
-# define MUTEX_CALLSTACK /* requires DEADLOCK_AVOIDANCE */
+//# define DEADLOCK_AVOIDANCE
+//# define MUTEX_CALLSTACK /* requires DEADLOCK_AVOIDANCE */
/* even though only usable in all-private config useful in default builds */
# define SHARING_STUDY
# define HASHTABLE_STATISTICS