Android crashes have less descriptive symbols |
||||||||
Issue descriptionChrome Version: 61.0.3128.0 OS: Android What steps will reproduce the problem? Looking at the crash data for Canary on Android, the crash stacks seem to have less symbol information starting with 61.0.3128.0. The version before, 61.0.3125.5, has okay symbol information. Here's an example for a crash called in ~GpuImageDecodeCache: https://crash.corp.google.com/browse?q=product.name%3D%27Chrome_Android%27%20AND%20product.version%3D%2761.0.3125.5%27%20AND%20custom_data.ChromeCrashProto.channel%3D%27canary%27%20AND%20custom_data.ChromeCrashProto.magic_signature_1.name%3D%27infobars%3A%3AInfoBarContainer%3A%3ARemoveInfoBar%27&ignore_case=false&enable_rewrite=true&omit_field_name=&omit_field_value=&omit_field_opt=%3D&stbtiq=&reportid=&index=0 https://crash.corp.google.com/browse?q=product.name%3D%27Chrome_Android%27%20AND%20product.version%3D%2761.0.3128.0%27%20AND%20custom_data.ChromeCrashProto.channel%3D%27canary%27%20AND%20custom_data.ChromeCrashProto.magic_signature_1.name%3D%27~GpuImageDecodeCache%27&ignore_case=false&enable_rewrite=true&omit_field_name=&omit_field_value=&omit_field_opt=%3D&stbtiq=&reportid=&index=0 In the first crash, you get the full namespace and class name "cc::GpuImageDecodeCache::~GpuImageDecodeCache()". In the second, you only get the method name "~GpuImageDecodeCache()". What is the expected result? Full symbol information in crash reports. What happens instead? Only partial symbol information. I think this may be related to the switch to clang (f823f843f06636feb082521d76c282a16fe2d577) since that first landed at 61.0.3127.0, which is within the regression range. Please use labels and text to provide additional information. For graphics-related bugs, please copy/paste the contents of the about:gpu page at the end of this report.
,
Jun 20 2017
https://omahaproxy.appspot.com/ for 61.0.3125.5: Commit: b8f64ce9fbf3d5ead93354cff4b9c9bb30a8c074 Branch Base Commit: 275810438db9694d4030c6b6390a0abe20618646 Branch Base Position: 478135 For 61.0.3128.0: Commit: f34fba83bde8a3ca5396f9073733b8369505e9ab Branch Base Commit: f34fba83bde8a3ca5396f9073733b8369505e9ab Branch Base Position: 478527 https://chromium.googlesource.com/chromium/src/+log/61.0.3125.0..61.0.3128.0?pretty=fuller&n=10000 https://cs.chromium.org/chromium/src/build/config/compiler/BUILD.gn?type=cs&q=gdwarf+package:%5Echromium$&l=1727 looks possibly related, as do bug 638485 and bug 648948 (but only vaguely). This works fine on Mac, so maybe we should even use -gdwarf-2? Hm, do Linux builds have fully qualified stacks? That uses dwarf 4 I think (?) Ultimately this feels like the root cause might be on the debug data processing side on crash/. Maybe there's some workaround we can do on our side though.
,
Jun 20 2017
,
Jun 20 2017
Given that things look fine on Linux (e.g. https://crash.corp.google.com/browse?q=&ignore_case=false&enable_rewrite=true&omit_field_name=&omit_field_value=&omit_field_opt=&stbtiq=product:Chrome_Linux&reportid=e978c39808000000&index=18), we're probably holding something differently on Android. https://uberchromegw.corp.google.com/i/official.android/builders/official-arm/builds/2144/steps/Generate%20Makefiles/logs/stdio : enable_remoting = true enable_resource_whitelist_generation = true ffmpeg_branding = "Chrome" is_chrome_branded = true is_component_build = false is_debug = false is_official_build = true proprietary_codecs = true symbol_level = 1 target_cpu = "arm" target_os = "android" use_signing_keys = true https://uberchromegw.corp.google.com/i/official.desktop/builders/linux64/builds/340/steps/generate_build_files/logs/stdio is_chrome_branded = true is_debug = false is_official_build = true Maybe the symbol_level=1 bit? That is there because of bug 638485 / bug 648948. rsesek, do you know if it's possible to test the crash pipeline locally somehow? Else cycle time for changes will be pretty long.
,
Jun 20 2017
My first thought was that the symbol_level=1 bit looks like a red flag, and maybe the behavior is different under clang than under gcc? But the part of the symbol pipeline that matters is the generation of the Breakpad symbols. That'd be this step from the build you linked above: https://uberchromegw.corp.google.com/i/official.android/builders/official-arm/builds/2144/steps/Upload%20Symbols/logs/stdio. If I download the file libchrome.so/BAD8E554DA35CCBBCD4988B061D629650/libchrome.so.sym from the crash backend, I can see that the FUNC record isn't named properly: FUNC e6f9bc 110 0 ~GpuImageDecodeCache e6f9bc 6 392 923 e6f9c2 1c 392 923 e6f9de 2 827 14021 e6f9e0 4 394 923 e6f9e4 8 398 923 e6f9ec 4 401 923 e6f9f0 6 401 923 e6f9f6 4 404 923 e6f9fa 6 404 923 e6fa00 4 473 14064 e6fa04 2 447 14064 e6fa06 4 447 14064 e6fa0a 4 448 14064 e6fa0e 4 282 15908 e6fa12 2 192 15908 But if I download the actual lib.unstripped for that version (61.0.3136.3), the symbols appear intact: % greadelf -x .note.gnu.build-id libchrome.so Hex dump of section '.note.gnu.build-id': 0x00000134 04000000 14000000 03000000 474e5500 ............GNU. 0x00000144 54e5d8ba 35dabbcc cd4988b0 61d62965 T...5....I..a.)e 0x00000154 c5db6779 ..gy % gnm -C libchrome.so --target=elf32-littlearm | grep GpuImage … 00e6fad8 t cc::GpuImageDecodeCache::~GpuImageDecodeCache() 00e6f9bc t cc::GpuImageDecodeCache::~GpuImageDecodeCache() 00e6f9bc t cc::GpuImageDecodeCache::~GpuImageDecodeCache() …
,
Jun 20 2017
I can reproduce this locally with these args: is_component_build = false is_debug = false is_official_build = true target_cpu = "arm" target_os = "android" use_goma = true (i.e. symbol_level does not have an effect). That means the problem is probably with how dump_syms is interpreting the debug info outputted by clang. What's interesting is that there is a FUNC record with the wrong name, but there is a PUBLIC with the full one: % ./out/arm-official/dump_syms -v out/arm-official/lib.unstripped/libchrome.so > symbols.tmp 2> errors % grep '~GpuImageDecodeCache' symbols.tmp FUNC e59d2c 110 0 ~GpuImageDecodeCache PUBLIC e59d2d 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e59e3d 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e59e43 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e59e49 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e59e57 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e59e67 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() And that output matches the official symbol upload for BAD8E554DA35CCBBCD4988B061D629650. Compare that to the official symbols for 61.0.3125.5 (585CE4AAFDC957F040F9D16CCA8BC6EF0): % grep '~GpuImageDecodeCache' 585CE4AAFDC957F040F9D16CCA8BC6EF0.sym FUNC e81730 130 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() FUNC e81870 12 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e81731 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e81861 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e81869 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e81871 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e81885 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC e8188d 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache()
,
Jun 20 2017
And if you target Linux, things work?
,
Jun 20 2017
On Linux, the symbol_level=1 matters. % cat out/tmp-linux/args.gn is_component_build = false is_debug = false is_official_build = true symbol_level = 1 target_os = "linux" use_goma = true % grep '~GpuImageDecodeCache' symbols2.tmp FUNC 4c8ddb0 1bb 0 ~GpuImageDecodeCache PUBLIC 4c8ddb0 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8df70 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8df80 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8df90 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8dfb0 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8dfd0 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() Removing |symbol_level = 1| results in: % grep '~GpuImageDecodeCache' symbols3.tmp FUNC 4c8d150 1bb 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() FUNC 4c8d310 9 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() FUNC 4c8d320 9 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() FUNC 4c8d350 19 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() FUNC 4c8d370 19 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8d150 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8d310 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8d320 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8d330 0 cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8d350 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache() PUBLIC 4c8d370 0 non-virtual thunk to cc::GpuImageDecodeCache::~GpuImageDecodeCache()
,
Jun 20 2017
Can you paste a compile line with each? (touch cc file, pass `-j 1 -v` to ninja)
,
Jun 20 2017
Looks like Android gets |-gdwarf-3 -g1| while official Linux gets |-g2|. Android: python "../../build/toolchain/gcc_compile_wrapper.py" --resource-whitelist="obj/cc/cc/gpu_image_decode_cache.o.whitelist" /usr/local/google/home/rsesek/goma/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/cc/cc/gpu_image_decode_cache.o.d -DCC_IMPLEMENTATION=1 -DV8_DEPRECATION_WARNINGS -DUSE_OPENSSL_CERTS=1 -DNO_TCMALLOC -DDISABLE_NACL -DSAFE_BROWSING_DB_REMOTE -DOFFICIAL_BUILD -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=\"305735-1\" -D_FILE_OFFSET_BITS=64 -DANDROID -DHAVE_SYS_UIO_H -DANDROID_NDK_VERSION_ROLL=r12b_1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -D__GNU_SOURCE=1 -D__compiler_offsetof=__builtin_offsetof -Dnan=__builtin_nan -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DUSE_EGL -DDISABLE_FFMPEG_VIDEO_DECODERS -DSK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS -DSK_HAS_PNG_LIBRARY -DSK_HAS_WEBP_LIBRARY -DSK_HAS_JPEG_LIBRARY -DSK_SUPPORT_GPU=1 -DSK_BUILD_FOR_ANDROID -DUSE_CHROMIUM_SKIA -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=uint16_t -DMESA_EGL_NO_X11_HEADERS -I../.. -Igen -I../../third_party/libwebp/src -I../../third_party/khronos -I../../gpu -I../../skia/config -I../../skia/ext -I../../third_party/skia/include/c -I../../third_party/skia/include/config -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/encode -I../../third_party/skia/include/images -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pdf -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../third_party/skia/third_party/vulkan -I../../third_party/skia/include/gpu -I../../third_party/skia/src/gpu -I../../third_party/skia/src/sksl -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/mesa/src/include -I../../third_party/libwebm/source -Igen/media/base/android/media_jni_headers -Igen/media/base/android/media_jni_headers/media -I../../third_party/libyuv/include -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pipe -fcolor-diagnostics -ffunction-sections -fno-short-enums --target=arm-linux-androideabi -march=armv7-a -mfloat-abi=softfp -mtune=generic-armv7-a -mfpu=neon -mthumb -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-unused-lambda-capture -Wno-user-defined-warnings -fomit-frame-pointer -gdwarf-3 -g1 --sysroot=../../third_party/android_tools/ndk/platforms/android-16/arch-arm -fvisibility=hidden -Xclang -load -Xclang ../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang check-auto-raw-pointer -Xclang -plugin-arg-find-bad-constructs -Xclang check-ipc -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -O2 -fno-ident -fdata-sections -ffunction-sections -std=gnu++11 -fno-rtti -isystem../../third_party/android_tools/ndk/sources/cxx-stl/llvm-libc++/libcxx/include -isystem../../third_party/android_tools/ndk/sources/cxx-stl/llvm-libc++abi/libcxxabi/include -isystem../../third_party/android_tools/ndk/sources/android/support/include -fno-exceptions -fvisibility-inlines-hidden -c ../../cc/tiles/gpu_image_decode_cache.cc -o obj/cc/cc/gpu_image_decode_cache.o Linux without symbol_level specified: /usr/local/google/home/rsesek/goma/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/cc/cc/gpu_image_decode_cache.o.d -DCC_IMPLEMENTATION=1 -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DOFFICIAL_BUILD -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=\"305735-1\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -DCFI_ENFORCEMENT -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -DGL_GLEXT_PROTOTYPES -DUSE_GLX -DUSE_EGL -DSK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS -DSK_HAS_PNG_LIBRARY -DSK_HAS_WEBP_LIBRARY -DSK_HAS_JPEG_LIBRARY -DSK_SUPPORT_GPU=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=uint16_t -I../.. -Igen -I../../build/linux/debian_jessie_amd64-sysroot/usr/include/glib-2.0 -I../../build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu/glib-2.0/include -I../../third_party/libwebp/src -I../../third_party/khronos -I../../gpu -I../../skia/config -I../../skia/ext -I../../third_party/skia/include/c -I../../third_party/skia/include/config -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/encode -I../../third_party/skia/include/images -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pdf -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../third_party/skia/third_party/vulkan -I../../third_party/skia/include/gpu -I../../third_party/skia/src/gpu -I../../third_party/skia/src/sksl -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/mesa/src/include -I../../third_party/libwebm/source -I../../third_party/libyuv/include -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pipe -B../../third_party/binutils/Linux_x64/Release/bin -pthread -fcolor-diagnostics -flto=thin -fwhole-program-vtables -m64 -march=x86-64 -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-unused-lambda-capture -Wno-user-defined-warnings -O2 -fno-ident -fdata-sections -ffunction-sections -fomit-frame-pointer -g2 --sysroot=../../build/linux/debian_jessie_amd64-sysroot -fsanitize=cfi-vcall -fsanitize-blacklist=../../tools/cfi/blacklist.txt -fvisibility=hidden -Xclang -load -Xclang ../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang check-auto-raw-pointer -Xclang -plugin-arg-find-bad-constructs -Xclang check-ipc -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -std=gnu++11 -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -c ../../cc/tiles/gpu_image_decode_cache.cc -o obj/cc/cc/gpu_image_decode_cache.o Linux with symbol_level=1: /usr/local/google/home/rsesek/goma/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/cc/cc/gpu_image_decode_cache.o.d -DCC_IMPLEMENTATION=1 -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DOFFICIAL_BUILD -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=\"305735-1\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -DCFI_ENFORCEMENT -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -DGL_GLEXT_PROTOTYPES -DUSE_GLX -DUSE_EGL -DSK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS -DSK_HAS_PNG_LIBRARY -DSK_HAS_WEBP_LIBRARY -DSK_HAS_JPEG_LIBRARY -DSK_SUPPORT_GPU=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=uint16_t -I../.. -Igen -I../../build/linux/debian_jessie_amd64-sysroot/usr/include/glib-2.0 -I../../build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu/glib-2.0/include -I../../third_party/libwebp/src -I../../third_party/khronos -I../../gpu -I../../skia/config -I../../skia/ext -I../../third_party/skia/include/c -I../../third_party/skia/include/config -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/encode -I../../third_party/skia/include/images -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pdf -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../third_party/skia/third_party/vulkan -I../../third_party/skia/include/gpu -I../../third_party/skia/src/gpu -I../../third_party/skia/src/sksl -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/mesa/src/include -I../../third_party/libwebm/source -I../../third_party/libyuv/include -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pipe -B../../third_party/binutils/Linux_x64/Release/bin -pthread -fcolor-diagnostics -flto=thin -fwhole-program-vtables -m64 -march=x86-64 -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-unused-lambda-capture -Wno-user-defined-warnings -O2 -fno-ident -fdata-sections -ffunction-sections -fomit-frame-pointer -g1 --sysroot=../../build/linux/debian_jessie_amd64-sysroot -fsanitize=cfi-vcall -fsanitize-blacklist=../../tools/cfi/blacklist.txt -fvisibility=hidden -Xclang -load -Xclang ../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang check-auto-raw-pointer -Xclang -plugin-arg-find-bad-constructs -Xclang check-ipc -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -std=gnu++11 -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -c ../../cc/tiles/gpu_image_decode_cache.cc -o obj/cc/cc/gpu_image_decode_cache.o
,
Jun 20 2017
I suppose removing just -gdwarf3 doesn't help? The -g1 is there because android needs 32-bit builds, see issue 648948. That issue suggests that the toolchain should support fission, so we could try switching that on.
,
Jun 20 2017
No, removing -gdwarf3 from the minimal_symbols config doesn't help.
,
Jun 26 2017
,
Jun 27 2017
I'll try turning on fission and making -g2 the default on Android, like on Linux. In case fission doesn't work out, it looks like fdebug-info-for-profiling forces on linkage name and a bunch of other things ( https://reviews.llvm.org/D25435 ) so maybe passing that gets us stacks while keeping binary size small enough, as a fallback plan.
,
Jun 27 2017
I made a CL for fission here: https://codereview.chromium.org/2962673002/ Then I remembered that fission doesn't currently work for Android. I tried to make it go and managed to do so locally, but it needs work on the goma side too apparently (https://bugs.chromium.org/p/chromium/issues/detail?id=721792#c11). So I'll give the fallback plan a shot now.
,
Jun 27 2017
Marking as RBB, this is making crash triaging more difficult.
,
Jun 27 2017
,
Jun 27 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/120b37effd521f42b59184bb0abc9d8cebcafc0d commit 120b37effd521f42b59184bb0abc9d8cebcafc0d Author: thakis <thakis@chromium.org> Date: Tue Jun 27 22:51:18 2017 android: Use fdebug-info-for-profiling in minimal_symbols mode (the default). We build chrome with -g1 on Android, because with -g2 binary size exceeds the 32-bit ELF container format. However, in -g1 mode clang doesn't emit DW_AT_linkage_name annotations, so we don't get qualified names in stacks. As a workaround, pass fdebug-info-for-profiling which enables DW_AT_linkage_name and a few other things we don't need. This increases the size of unstripped libchrome.so from 400MB to 600MB, which is quite a bit larger, but still comfortably below the limit. BUG= 735027 Review-Url: https://codereview.chromium.org/2959083002 Cr-Commit-Position: refs/heads/master@{#482772} [modify] https://crrev.com/120b37effd521f42b59184bb0abc9d8cebcafc0d/build/config/compiler/BUILD.gn
,
Jun 27 2017
This should be better now.
,
Jun 28 2017
Issue 681941 has been merged into this issue.
,
Jun 29 2017
Here are crashes from today's canary, which has the fix and qualified stacks: https://crash.corp.google.com/browse?q=&ignore_case=false&enable_rewrite=true&omit_field_name=&omit_field_value=&omit_field_opt=&stbtiq=product:Chrome_Android&reportid=015eac9e08000000&index=1 Here's one from yesterday's, which doesn't have the fix and where stacks still are abbreviated: https://crash.corp.google.com/browse?q=product.name%3D%27Chrome_Android%27%20AND%20product.version%3D%2761.0.3142.0%27%20AND%20custom_data.ChromeCrashProto.channel%3D%27canary%27%20AND%20ReportID%3D%27c038808e38000000%27&ignore_case=false&enable_rewrite=true&omit_field_name=&omit_field_value=&omit_field_opt=%3D&stbtiq=&reportid=&index=0
,
Jul 20 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/80ad313b09c1de7954088628bc2436a16e8eab00 commit 80ad313b09c1de7954088628bc2436a16e8eab00 Author: Nico Weber <thakis@chromium.org> Date: Thu Jul 20 19:07:47 2017 android: Add back -gdwarf-3 when targeting 32-bit arm. I had removed this in https://codereview.chromium.org/2959083002, but it looks like dump_syms still needs it on arm for now. Bug: 744956 , 735027 Change-Id: Ia438c53abc6d6f7f39aada563bdcb68d328b1115 Reviewed-on: https://chromium-review.googlesource.com/579930 Reviewed-by: Mark Mentovai <mark@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/master@{#488342} [modify] https://crrev.com/80ad313b09c1de7954088628bc2436a16e8eab00/build/config/compiler/BUILD.gn |
||||||||
►
Sign in to add a comment |
||||||||
Comment 1 by rsesek@chromium.org
, Jun 20 2017