New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 801364 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug

Blocked on:
issue 836820

Blocking:
issue 801445
issue 759794
issue 789981
issue 817448



Sign in to add a comment

Investigate "Function basic block count change detected (counter mismatch)" warnings from llvm-profdata

Project Member Reported by mmoroz@chromium.org, Jan 11 2018

Issue description

Happened while merging .profraw dumps from bunch of different unit tests binaries: https://bugs.chromium.org/p/chromium/issues/detail?id=789981#c3

dumps/angle_unittests/dump.2040316039267677098_3.profraw: pthread_equal: Counter overflow
dumps/angle_unittests/dump.2040316039267677098_6.profraw: pthread_equal: Counter overflow
dumps/angle_unittests/dump.2040316039267677098_1.profraw: pthread_equal: Counter overflow
dumps/angle_unittests/dump.2040316039267677098_4.profraw: pthread_equal: Counter overflow
dumps/crypto_unittests/dump.17658236193432990634_4.profraw: pthread_equal: Counter overflow
dumps/crypto_unittests/dump.17658236193432990634_4.profraw: pthread_equal: Counter overflow
dumps/gfx_unittests/dump.11332153608800367530_2.profraw: pthread_equal: Counter overflow
dumps/gfx_unittests/dump.11332153608800367530_2.profraw: pthread_equal: Counter overflow
dumps/gfx_unittests/dump.11332153608800367530_6.profraw: pthread_equal: Counter overflow
dumps/gfx_unittests/dump.11332153608800367530_5.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.18129347680933893626_2.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.18129347680933893626_6.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.18129347680933893626_5.profraw: pthread_equal: Counter overflow
dumps/media_service_unittests/dump.16981596636894786474_1.profraw: pthread_equal: Counter overflow
dumps/media_service_unittests/dump.16981596636894786474_7.profraw: pthread_equal: Counter overflow
dumps/media_unittests/dump.5003564814167241642_0.profraw: pthread_equal: Counter overflow
dumps/media_service_unittests/dump.16981596636894786474_1.profraw: pthread_equal: Counter overflow
dumps/media_service_unittests/dump.16981596636894786474_7.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.18129347680933893626_2.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.18129347680933893626_6.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.18129347680933893626_5.profraw: pthread_equal: Counter overflow
dumps/media_unittests/dump.5003564814167241642_0.profraw: pthread_equal: Counter overflow
dumps/media_unittests/dump.5003564814167241642_6.profraw: pthread_equal: Counter overflow
dumps/media_unittests/dump.5003564814167241642_7.profraw: pthread_equal: Counter overflow
dumps/net_unittests/dump.870461632128807850_7.profraw: pthread_equal: Counter overflow
dumps/net_unittests/dump.870461632128807850_6.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.13472296681195446067_3.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.
dumps/services_unittests/dump.13472296681195446067_4.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/services_unittests/dump.13472296681195446067_5.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/services_unittests/dump.13472296681195446067_6.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/services_unittests/dump.13472296681195446067_7.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/services_unittests/dump.14691376123264453616_5.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.14691376123264453616_5.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.14691376123264453616_7.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.14691376123264453616_7.profraw: pthread_equal: Counter overflow
dumps/content_unittests/dump.8437274155298386858_6.profraw: pthread_equal: Counter overflow
dumps/content_unittests/dump.8437274155298386858_1.profraw: pthread_equal: Counter overflow
dumps/content_unittests/dump.8437274155298386858_4.profraw: pthread_equal: Counter overflow
dumps/content_unittests/dump.8437274155298386858_0.profraw: pthread_equal: Counter overflow
dumps/sql_unittests/dump.17677217771644318634_4.profraw: pthread_equal: Counter overflow
dumps/sql_unittests/dump.17677217771644318634_4.profraw: pthread_equal: Counter overflow
dumps/swiftshader_unittests/dump.13472296681195446067_0.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/swiftshader_unittests/dump.13472296681195446067_5.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/net_unittests/dump.870461632128807850_2.profraw: pthread_equal: Counter overflow
dumps/storage_unittests/dump.340226792365552554_0.profraw: pthread_equal: Counter overflow
dumps/net_unittests/dump.870461632128807850_2.profraw: pthread_equal: Counter overflow
dumps/wtf_unittests/dump.18136610327846253482_0.profraw: pthread_equal: Counter overflow
dumps/wtf_unittests/dump.18136610327846253482_0.profraw: pthread_equal: Counter overflow
dumps/storage_unittests/dump.340226792365552554_0.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.4846653579688473514_6.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.4846653579688473514_5.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.4846653579688473514_6.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.4846653579688473514_5.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.18402210822757872554_1.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.18402210822757872554_2.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.18402210822757872554_0.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.18402210822757872554_5.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.18402210822757872554_1.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.18402210822757872554_2.profraw: pthread_equal: Counter overflow
warning: dumps/views_unittests/dump.8821794557754463738_0.profraw: Counter overflow
warning: dumps/views_unittests/dump.8821794557754463738_4.profraw: Counter overflow
warning: dumps/views_unittests/dump.8821794557754463738_5.profraw: Counter overflow
warning: dumps/wm_unittests/dump.16236102734248777569_2.profraw: Counter overflow
warning: dumps/wm_unittests/dump.16236102734248777569_6.profraw: Counter overflow
warning: dumps/wm_unittests/dump.16236102734248777569_7.profraw: Counter overflow
warning: dumps/wm_unittests/dump.17328508853544088490_2.profraw: Counter overflow
warning: dumps/wm_unittests/dump.17328508853544088490_6.profraw: Counter overflow
warning: dumps/wm_unittests/dump.17328508853544088490_7.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.18136610327846253482_0.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.18136610327846253482_1.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.18136610327846253482_3.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.18136610327846253482_4.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.18136610327846253482_5.profraw: Counter overflow
warning: dumps/storage_unittests/dump.340226792365552554_5.profraw: Function basic block count change detected (counter mismatch)
warning: dumps/storage_unittests/dump.340226792365552554_6.profraw: Counter overflow
warning: dumps/storage_unittests/dump.340226792365552554_7.profraw: Counter overflow
warning: dumps/swiftshader_unittests/dump.13472296681195446067_0.profraw: Counter overflow

 

Comment 1 by mmoroz@chromium.org, Jan 11 2018

Blocking: 789981 759794

Comment 2 by mmoroz@chromium.org, Feb 22 2018

Another bunch of warnings from doing the same stuff on a newer revision:

$ time third_party/llvm-build/Release+Asserts/bin/llvm-profdata merge -sparse dumps/*/*.profraw -o dumps/merged.profdata
dumps/angle_unittests/dump.18316999429472973738_5.profraw: pthread_equal: Counter overflow
dumps/angle_unittests/dump.18316999429472973738_3.profraw: pthread_equal: Counter overflow
dumps/angle_unittests/dump.18316999429472973738_2.profraw: pthread_equal: Counter overflow
dumps/gfx_unittests/dump.386878935451104170_6.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_0.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_1.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_3.profraw: pthread_equal: Counter overflow
dumps/media_service_unittests/dump.2315245595604087722_6.profraw: pthread_equal: Counter overflow
dumps/media_service_unittests/dump.2315245595604087722_6.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_0.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_1.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_3.profraw: pthread_equal: Counter overflow
dumps/media_unittests/dump.4991571564513522602_2.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.12746703418510548787_1.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.
dumps/services_unittests/dump.12746703418510548787_2.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/services_unittests/dump.12746703418510548787_3.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/content_unittests/dump.1296838580397994922_4.profraw: pthread_equal: Counter overflow
dumps/content_unittests/dump.1296838580397994922_2.profraw: pthread_equal: Counter overflow
dumps/media_unittests/dump.4991571564513522602_6.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.12746703418510548787_7.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/services_unittests/dump.12746703418510548787_4.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/gpu_unittests/dump.5461668470095934378_7.profraw: pthread_equal: Counter overflow
dumps/gpu_unittests/dump.5461668470095934378_5.profraw: pthread_equal: Counter overflow
dumps/gpu_unittests/dump.5461668470095934378_7.profraw: pthread_equal: Counter overflow
dumps/gpu_unittests/dump.5461668470095934378_5.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_0.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_1.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_2.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_3.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_0.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_1.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_6.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_7.profraw: pthread_equal: Counter overflow
warning: dumps/views_unittests/dump.6610692226059982330_0.profraw: Counter overflow
warning: dumps/views_unittests/dump.6610692226059982330_1.profraw: Counter overflow
warning: dumps/views_unittests/dump.6610692226059982330_2.profraw: Counter overflow
warning: dumps/views_unittests/dump.6610692226059982330_3.profraw: Counter overflow
warning: dumps/views_unittests/dump.6610692226059982330_4.profraw: Counter overflow
warning: dumps/views_unittests/dump.6610692226059982330_5.profraw: Counter overflow
warning: dumps/views_unittests/dump.6610692226059982330_6.profraw: Counter overflow
warning: dumps/views_unittests/dump.6610692226059982330_7.profraw: Counter overflow
warning: dumps/wm_unittests/dump.15835933278296446817_3.profraw: Counter overflow
warning: dumps/wm_unittests/dump.5416851889370493866_0.profraw: Counter overflow
warning: dumps/wm_unittests/dump.5416851889370493866_2.profraw: Counter overflow
warning: dumps/wm_unittests/dump.5416851889370493866_3.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.16755835025050891178_0.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.16755835025050891178_2.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.16755835025050891178_4.profraw: Counter overflow
warning: dumps/wtf_unittests/dump.16755835025050891178_7.profraw: Counter overflow
warning: dumps/swiftshader_unittests/dump.12746703418510548787_5.profraw: Function basic block count change detected (counter mismatch)
warning: dumps/swiftshader_unittests/dump.12746703418510548787_6.profraw: Function basic block count change detected (counter mismatch)
error: dumps/service_manager_unittests/dump.14882662155174628336_0.profraw: Invalid instrumentation profile data (file header is corrupt)

real	2m54.935s
user	19m23.004s
sys	3m54.036s

Comment 3 by mmoroz@chromium.org, Feb 22 2018

And another bunch of warnings observed when merging dumps from unittests + fuzzers:

$ time third_party/llvm-build/Release+Asserts/bin/llvm-profdata merge -sparse dumps/*/*.profraw fuzzer_dumps/*/dump.profraw -o tests_and_fuzzers.profdata
dumps/angle_unittests/dump.18316999429472973738_5.profraw: pthread_equal: Counter overflow
dumps/angle_unittests/dump.18316999429472973738_2.profraw: pthread_equal: Counter overflow
dumps/angle_unittests/dump.18316999429472973738_3.profraw: pthread_equal: Counter overflow
dumps/gfx_unittests/dump.386878935451104170_6.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_1.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_0.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_3.profraw: pthread_equal: Counter overflow
dumps/media_service_unittests/dump.2315245595604087722_6.profraw: pthread_equal: Counter overflow
dumps/media_service_unittests/dump.2315245595604087722_6.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_1.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_0.profraw: pthread_equal: Counter overflow
dumps/media_mojo_unittests/dump.2734634062402409978_3.profraw: pthread_equal: Counter overflow
dumps/media_unittests/dump.4991571564513522602_2.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.12746703418510548787_2.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.
dumps/services_unittests/dump.12746703418510548787_3.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/services_unittests/dump.12746703418510548787_4.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/content_unittests/dump.1296838580397994922_2.profraw: pthread_equal: Counter overflow
dumps/content_unittests/dump.1296838580397994922_4.profraw: pthread_equal: Counter overflow
dumps/media_unittests/dump.4991571564513522602_6.profraw: pthread_equal: Counter overflow
dumps/sql_unittests/dump.16602651782091699114_4.profraw: pthread_equal: Counter overflow
dumps/sql_unittests/dump.16602651782091699114_4.profraw: pthread_equal: Counter overflow
dumps/gpu_unittests/dump.5461668470095934378_7.profraw: pthread_equal: Counter overflow
dumps/gpu_unittests/dump.5461668470095934378_5.profraw: pthread_equal: Counter overflow
dumps/services_unittests/dump.12746703418510548787_7.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/wm_unittests/dump.5416851889370493866_7.profraw: pthread_equal: Counter overflow
dumps/gpu_unittests/dump.5461668470095934378_7.profraw: pthread_equal: Counter overflow
dumps/gpu_unittests/dump.5461668470095934378_5.profraw: pthread_equal: Counter overflow
dumps/wm_unittests/dump.5416851889370493866_7.profraw: pthread_equal: Counter overflow
dumps/wtf_unittests/dump.16755835025050891178_7.profraw: pthread_equal: Counter overflow
dumps/wtf_unittests/dump.16755835025050891178_7.profraw: pthread_equal: Counter overflow
fuzzer_dumps/gpu_swiftshader_fuzzer/dump.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/unit_tests/dump.11404473204906193834_2.profraw: pthread_equal: Counter overflow
fuzzer_dumps/mediasource_WEBM_VP9_pipeline_integration_fuzzer/dump.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_1.profraw: pthread_equal: Counter overflow
fuzzer_dumps/mediasource_WEBM_VP9_pipeline_integration_fuzzer/dump.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_3.profraw: pthread_equal: Counter overflow
fuzzer_dumps/blink_text_codec_UTF_8_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/blink_text_codec_WINDOWS_1252_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/blink_png_decoder_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/clear_site_data_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
dumps/unit_tests/dump.11404473204906193834_2.profraw: pthread_equal: Counter overflow
fuzzer_dumps/css_parser_proto_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/feature_policy_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
dumps/unit_tests/dump.11404473204906193834_3.profraw: pthread_equal: Counter overflow
fuzzer_dumps/content_security_policy_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
dumps/unit_tests/dump.11404473204906193834_1.profraw: pthread_equal: Counter overflow
dumps/unit_tests/dump.11404473204906193834_0.profraw: pthread_equal: Counter overflow
fuzzer_dumps/css_parser_fast_paths_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
dumps/unit_tests/dump.11404473204906193834_6.profraw: pthread_equal: Counter overflow
fuzzer_dumps/html_preload_scanner_fuzzer/dump.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
dumps/unit_tests/dump.11404473204906193834_7.profraw: pthread_equal: Counter overflow
fuzzer_dumps/profiling_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/xml_parser_fuzzer/dump.profraw: pthread_equal: Counter overflow
fuzzer_dumps/origin_manifest_parser_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/origin_trial_token_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/mhtml_parser_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/xml_parser_fuzzer/dump.profraw: pthread_equal: Counter overflow
fuzzer_dumps/template_url_parser_fuzzer/dump.profraw: pthread_equal: Counter overflow
fuzzer_dumps/swiftshader_vertex_routine_fuzzer/dump.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
fuzzer_dumps/renderer_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/template_url_parser_fuzzer/dump.profraw: pthread_equal: Counter overflow
fuzzer_dumps/web_icon_sizes_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/blink_harfbuzz_shaper_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/stylesheet_contents_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/text_resource_decoder_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/blink_json_parser_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/blink_html_tokenizer_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
fuzzer_dumps/v8_serialized_script_value_fuzzer/dump.profraw: _ZN2sh17ConstructCompilerEj12ShShaderSpec14ShShaderOutput: Function basic block count change detected (counter mismatch)
warning: fuzzer_dumps/v8_wasm_names_section_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/v8_wasm_types_section_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/vp8_depacketizer_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/vp9_qp_parser_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/webcrypto_ec_import_key_pkcs8_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/webcrypto_rsa_import_key_spki_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/web_icon_sizes_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/webusb_descriptors_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/xml_parser_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/zlib_deflate_set_dictionary_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/zlib_uncompress_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/zucchini_patch_fuzzer/dump.profraw: Function basic block count change detected (counter mismatch)
warning: fuzzer_dumps/sign_response_data_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/skia_color_space_fuzzer/dump.profraw: Function basic block count change detected (counter mismatch)
warning: fuzzer_dumps/skia_image_filter_proto_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/skia_path_fuzzer/dump.profraw: Counter overflow
warning: fuzzer_dumps/sqlite3_ossfuzz_fuzzer/dump.profraw: Function basic block count change detected (counter mismatch)
warning: fuzzer_dumps/sqlite3_prepare_v2_fuzzer/dump.profraw: Function basic block count change detected (counter mismatch)
warning: fuzzer_dumps/string_to_int_fuzzer/dump.profraw: Function basic block count change detected (counter mismatch)
warning: fuzzer_dumps/stylesheet_contents_fuzzer/dump.profraw: Counter overflow

real	4m28.893s
user	30m11.836s
sys	3m7.184s

Comment 4 by mmoroz@chromium.org, Feb 26 2018

Labels: -Pri-2 Pri-1
Owner: mmoroz@chromium.org
Status: Assigned (was: Available)
Such errors may negatively affect total coverage report, as merge is being interrupted when that happens:

void InstrProfRecord::merge(InstrProfRecord &Other, uint64_t Weight,
                            function_ref<void(instrprof_error)> Warn) {
  // If the number of counters doesn't match we either have bad data
  // or a hash collision.
  if (Counts.size() != Other.Counts.size()) {
    Warn(instrprof_error::count_mismatch);
    return;
  }
<...>


With my current approach to merge, I seem to observe such an error only 1-2 times per total coverage report generation. Thus, I currently simply raw dumps producing the error.

I wouldn't be too surprised if there is indeed a hash collision. I'll continue observations on more revisions and debug the error after that.

Comment 5 by mmoroz@chromium.org, Feb 26 2018

Also, the issue I'm observing happens with the same function across different targets:

dumps/services_unittests1/dump.1673089028436849578_0.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.
dumps/services_unittests1/dump.1673089028436849578_1.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)


dumps/swiftshader_unittests/dump.12747477572503478067_1.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.
dumps/swiftshader_unittests/dump.12747477572503478067_0.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)


dumps/gpu_swiftshader_fuzzer1/dump.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)



And the function seems to be declared in two places at least: https://cs.chromium.org/search/?q=macroexpander+gettoken&sq=package:chromium&type=cs

Comment 6 by mmoroz@chromium.org, Mar 24 2018

Blocking: 817448

Comment 7 by mmoroz@chromium.org, Mar 26 2018

Running more targets, I'm seeing that warning more often. _ZN2pp13MacroExpander8getTokenEPNS_5TokenE is the only symbol generating warnings at the moment. I wonder if it's possible to blacklist it somehow...

Do we know from which file this symbol comes from?

Comment 9 by mmoroz@chromium.org, Mar 26 2018

Sure, see c#5, it's defined in two places at least: https://cs.chromium.org/search/?q=MacroExpander::getToken%5C(Token+%5C*token%5C)&sq=package:chromium&type=cs

And likely that is the reason why we're seeing the warning, as one function has two counters with the same NameRef.
Sorry I missed the link in #5. I'm not super check with how linker resolves symbols, but do we know how the signature "_ZN2pp13MacroExpander8getTokenEPNS_5TokenE" is generated? And I'm surprised that the file name is not one of the inputs.
I think many different targets depend on GPU stuff, so they link in GPU altogether with those symbols as well.

Re the name, it's just C++ name mangling. Since it's possible to have overloaded functions, symbols names become more verbose in order to reflect that (compared to pure C where names are clear).
Blocking: 801445
This issue is important as per https://bugs.chromium.org/p/chromium/issues/detail?id=831939#c12 and needs investigation, but I don't think this is a blocker right now as it may affect only some areas of the codebase.
Cc: mmoroz@chromium.org lucferron@chromium.org geoffl...@chromium.org jmad...@chromium.org
Owner: ----
Status: Available (was: Assigned)
It looks like _ZN2pp13MacroExpander8getTokenEPNS_5TokenE is the only symbol causing troubles. I've just checked the logs from the bot again.

jmadill@, lucferron@, geofflang@, I wonder if you guys can help with that.


content_browsertests:
dumps/content_browsertests/dump.855472856347505578_1.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.
dumps/content_browsertests/dump.855472856347505578_0.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
warning: dumps/content_browsertests/dump.14334184836839687410_3.profraw: Function basic block count change detected (counter mismatch)
warning: dumps/content_browsertests/dump.855472856347505578_0.profraw: Function basic block count change detected (counter mismatch)

gpu_swiftshader_fuzzer:
warning: dumps/gpu_swiftshader_fuzzer/dump.14334184836839687410_0.profraw: Function basic block count change detected (counter mismatch)

services_unittests:
dumps/services_unittests/dump.3096629097081949168_0.profraw: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.
warning: dumps/services_unittests/dump.18443562707322227696_3.profraw: Function basic block count change detected (counter mismatch)
warning: dumps/services_unittests/dump.2769636281426463728_0.profraw: Function basic block count change detected (counter mismatch)
warning: dumps/services_unittests/dump.3096629097081949168_0.profraw: Function basic block count change detected (counter mismatch)

dumps/content_browsertests/test_by_one.profdata: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.

dumps/gpu_swiftshader_fuzzer/test_by_one.profdata: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.

dumps/swiftshader_unittests/test_by_one.profdata: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.

dumps/swiftshader_vertex_routine_fuzzer/test_by_one.profdata: _ZN2pp13MacroExpander8getTokenEPNS_5TokenE: Function basic block count change detected (counter mismatch)
Make sure that all profile data to be merged is generated from the same binary.


Sorry, can you provide more info? Is there a problem with angle_unittests? I see some mentions of swiftshader and other test suites, but it's unclear to me if ANGLE is related, or even what the problem is here.
Sure! The problem is that it looks like we have different functions corresponding to _ZN2pp13MacroExpander8getTokenEPNS_5TokenE symbol. That becomes an issue when generating code coverage report, as LLVM profiler gets confused when it sees two profile dumps where the same function has different number of basic blocks.

Does it make any sense? Do you have any idea why that can be happening?
Cc: capn@chromium.org sugoi@chromium.org
ANGLE and swiftshader both have very similar shader compiler code, they originated from the same project.

You can see the MacroExpander class is almost the same:
https://cs.chromium.org/chromium/src/third_party/angle/src/compiler/preprocessor/MacroExpander.h
https://cs.chromium.org/chromium/src/third_party/swiftshader/src/OpenGL/compiler/preprocessor/MacroExpander.h

I would imagine it would be triggered for many classes between these two projects, not sure if the mangled names can be annotated per library.
Would renaming ANGLE's version of the method fix the naming conflict?
Also yes, annotating the method with the object would solve the problem generally and prevent it from re-occurring.
I think either way is fine for us. What would be the most convenient for you?
This seems like a bug in the LLVM profiler or merging process if it can't differentiate between two symbols in different libraries that have the same name.

From comment #3 it looks like there are a couple extra conflicting symbols.

We can probably rename and work around the issue but I would imagine these issues will pop up again.
Blockedon: 836820
geofflang@, I agree with you. However, we've already fixed the other issues and there is a hope that we can get rid of them completely. I should've filed a separate bug for MacroExpander::getToken to avoid unnecessary confusion, sorry about that. Here it is:  issue 836820 

My understanding from LLVM side is that it's kind of our problem if we merge profiler dumps from various binaries with colliding symbols. It doesn't look like anyone else on Earth is trying to generate code coverage report for such a huge and complicated project as Chrome.

We've been trying to fix a similar issue before ( issue 801362  and https://bugs.llvm.org/show_bug.cgi?id=23499), but haven't succeeded :(
In the last sentence of c#23, I meant that we hadn't succeeded in fixing the issue in LLVM, but still found a solution in Chromium.
We can certainly change the name of the method in ANGLE to unblock you guys. I do agree with Geoff that enforcing a constraint that no two functions can have the same signature throughout all of Chrome is something that would not be very easy and might lead to repeated unexpected breakage in your tool.

A long-term solution might be tweaking the signatures somehow - is it possible to inspect the profiler dumps and do some some rewriting in a pre-processing step?
We'd greatly appreciate if you could rename that method.

Re long-term solution it has to be fixed in the linker, as it is what is responsible for generating profile counters and other data embedded into compiled binaries. It doesn't seem possible to re-write anything in the dumps / when processing the dumps, because dumps' content must strictly match profile data embedded into binaries so it can be mapped to the source code at the end.

The upstream issue is still open though. If that problem starts to occur again and again, we'll probably have to ask Dynamic Tools folks to looks into that, unless someone else finds a way to fix it upstream.
Project Member

Comment 27 by bugdroid1@chromium.org, Apr 25 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/angle/angle/+/197d52949eeddc338d9e7315dc8f07de37eb90b8

commit 197d52949eeddc338d9e7315dc8f07de37eb90b8
Author: Geoff Lang <geofflang@chromium.org>
Date: Wed Apr 25 22:25:24 2018

Wrap all preprocessor code in the angle namespace.

BUG= 836820 
BUG= 801364 

Change-Id: I08b6a2f9f12b689e09df6efd916c313e71e8a051
Reviewed-on: https://chromium-review.googlesource.com/1028581
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>

[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/Diagnostics.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/SourceLocation.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/glslang.l
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/ExpressionParser.y
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Preprocessor.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/pragma_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/DirectiveHandlerBase.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/MacroExpander.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/space_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/extension_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/error_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/ExpressionParser.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/DirectiveHandler.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Lexer.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Tokenizer.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/MacroExpander.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Tokenizer.l
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/input_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/DirectiveParser.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/glslang_lex.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/define_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Token.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Macro.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/location_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/DirectiveHandlerBase.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/char_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Tokenizer.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/ExpressionParser.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/operator_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/MockDirectiveHandler.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/numeric_lex.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/identifier_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/DirectiveParser.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/DiagnosticsBase.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/Diagnostics.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/number_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/PreprocessorTest.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Lexer.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Input.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/token_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Macro.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Preprocessor.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/DirectiveHandler.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Input.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/if_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/MockDiagnostics.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/util.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/version_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/ParseContext.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/translator/ParseContext.h
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/comment_test.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/DiagnosticsBase.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/compiler/preprocessor/Token.cpp
[modify] https://crrev.com/197d52949eeddc338d9e7315dc8f07de37eb90b8/src/tests/preprocessor_tests/PreprocessorTest.cpp

Project Member

Comment 28 by bugdroid1@chromium.org, Apr 26 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/158cb3e2476795076977c6641e5791dff33e6c1e

commit 158cb3e2476795076977c6641e5791dff33e6c1e
Author: angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Thu Apr 26 05:44:43 2018

Roll src/third_party/angle/ 23dc90b81..197d52949 (1 commit)

https://chromium.googlesource.com/angle/angle.git/+log/23dc90b81efb..197d52949eed

$ git log 23dc90b81..197d52949 --date=short --no-merges --format='%ad %ae %s'
2018-04-25 geofflang Wrap all preprocessor code in the angle namespace.

Created with:
  roll-dep src/third_party/angle
BUG= chromium:836820 , chromium:801364 


The AutoRoll server is located here: https://angle-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
TBR=geofflang@chromium.org

Change-Id: I4e73dc6ca51b5b8863fbcd0b266f8cd1a5df2500
Reviewed-on: https://chromium-review.googlesource.com/1029194
Reviewed-by: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#553928}
[modify] https://crrev.com/158cb3e2476795076977c6641e5791dff33e6c1e/DEPS

Owner: mmoroz@chromium.org
Status: Fixed (was: Available)
I don't see any warnings when merging dumps now, and the coverage numbers look better than they ever did! So awesome!

Sign in to add a comment