zmodem wrote: > It turns out another issue (https://crbug.com/402425841) also bisected to > this PR. That one is a run-time problem, so it may be trickier to figure out, > but I will look into it next.
The bugs seem related by both involving the ICU library, and if squinting a bit it seems they might both involve UnicodeString: It's not really clear *which* relocations against *which* .text section the linker is complaining about, but `.SCOVP$M` has a relocation against `??_EUnicodeString@icu_74@@UEAAPEAXI@Z` (`public: virtual void * __ptr64 __cdecl icu_74::UnicodeString::vector deleting destructor'(unsigned int) __ptr64`) as well as five against some .text section here: ``` $ build/bin/llvm-objdump -r repro.bad/C/src/chromium/src/out/Release/obj/third_party/icu/icuuc_private/filteredbrk.obj [...] RELOCATION RECORDS FOR [.SCOVP$M]: OFFSET TYPE VALUE 0000000000000000 IMAGE_REL_AMD64_ADDR64 ??_EUnicodeString@icu_74@@UEAAPEAXI@Z 0000000000000010 IMAGE_REL_AMD64_ADDR64 .text 0000000000000020 IMAGE_REL_AMD64_ADDR64 .text 0000000000000030 IMAGE_REL_AMD64_ADDR64 .text 0000000000000040 IMAGE_REL_AMD64_ADDR64 .text 0000000000000050 IMAGE_REL_AMD64_ADDR64 .text ``` and that's the only vector deleting destructor I find referenced from `.SCOVP$M`. In the crash from https://crbug.com/402425841 the code seems to segfault while doing something with `UnicodeString`'s vftable: ``` (12f60.1df84): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. *** WARNING: Unable to verify checksum for gen-regexp-special-case.exe.exe gen_regexp_special_case_exe!icu_74::UnicodeString::~UnicodeString+0x6: 0076c216 c70154a37f00 mov dword ptr [ecx],offset gen_regexp_special_case_exe!icu_74::UnicodeString::`vftable' (007fa354) ds:002b:00000001=???????? (12f60.1df84): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. *** WARNING: Unable to verify checksum for gen-regexp-special-case.exe.exe gen_regexp_special_case_exe!icu_74::UnicodeString::~UnicodeString+0x6: 0076c216 c70154a37f00 mov dword ptr [ecx],offset gen_regexp_special_case_exe!icu_74::UnicodeString::`vftable' (007fa354) ds:002b:00000001=???????? 0:000:x86> k # ChildEBP RetAddr 00 04cff514 007c0478 gen_regexp_special_case_exe!icu_74::UnicodeString::~UnicodeString+0x6 [o:\third_party\icu\source\common\unistr.cpp @ 423] 01 04cff528 0076988e gen_regexp_special_case_exe!icu_74::UnicodeString::~UnicodeString+0x18 [o:\third_party\icu\source\common\unicode\unistr.h @ 3346] 02 04cff53c 00774f0b gen_regexp_special_case_exe!uprv_deleteUObject_74+0x1e [o:\third_party\icu\source\common\uobject.cpp @ 105] 03 (Inline) -------- gen_regexp_special_case_exe!icu_74::UVector::removeAllElements+0x2d [o:\third_party\icu\source\common\uvector.cpp @ 255] 04 (Inline) -------- gen_regexp_special_case_exe!icu_74::UVector::~UVector+0x33 [o:\third_party\icu\source\common\uvector.cpp @ 64] 05 04cff554 00777f24 gen_regexp_special_case_exe!icu_74::UVector::~UVector+0x3b [o:\third_party\icu\source\common\uvector.cpp @ 63] 06 04cff570 0077da1b gen_regexp_special_case_exe!icu_74::UnicodeSet::~UnicodeSet+0x64 [o:\third_party\icu\source\common\uniset.cpp @ 199] 07 04cff728 0077d504 gen_regexp_special_case_exe!icu_74::UnicodeSet::closeOverCaseInsensitive+0x4fb [o:\third_party\icu\source\common\uniset_closure.cpp @ 295] 08 04cff738 0074137d gen_regexp_special_case_exe!icu_74::UnicodeSet::closeOver+0x34 [o:\third_party\icu\source\common\uniset_closure.cpp @ 228] 09 04cffa08 00741ad9 gen_regexp_special_case_exe!v8::internal::PrintSpecial+0xbd [o:\v8\src\regexp\gen-regexp-special-case.cc @ 70] 0a 04cffae4 00741bc5 gen_regexp_special_case_exe!v8::internal::WriteHeader+0x229 [o:\v8\src\regexp\gen-regexp-special-case.cc @ 148] 0b 04cffaf4 007ccb5c gen_regexp_special_case_exe!main+0x15 [o:\v8\src\regexp\gen-regexp-special-case.cc @ 164] 0c (Inline) -------- gen_regexp_special_case_exe!invoke_main+0x1c [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 78] 0d 04cffb3c 76b77ba9 gen_regexp_special_case_exe!__scrt_common_main_seh+0xfa [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 288] 0e 04cffb4c 77acc28b KERNEL32!BaseThreadInitThunk+0x19 0f 04cffba4 77acc20f ntdll32!__RtlUserThreadStart+0x2b 10 04cffbb4 00000000 ntdll32!_RtlUserThreadStart+0x1b ``` So maybe there is something wrong with the vector deleting destructor for ICU's UnicodeString or how it's being used. https://github.com/llvm/llvm-project/pull/126240 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits