diff --git a/src/common/windows/pdb_source_line_writer.cc b/src/common/windows/pdb_source_line_writer.cc index 5be053dc..4266dca8 100644 --- a/src/common/windows/pdb_source_line_writer.cc +++ b/src/common/windows/pdb_source_line_writer.cc @@ -715,10 +715,12 @@ bool PDBSourceLineWriter::GetModuleInfo(PDBModuleInfo *info) { return false; } + // Use the same format that the MS symbol server uses in filesystem + // hierarchies. wchar_t age_string[9]; WindowsStringUtils::safe_swprintf( age_string, sizeof(age_string) / sizeof(age_string[0]), - L"%X", age); + L"%x", age); info->debug_identifier = GUIDString::GUIDToSymbolServerWString(&guid); info->debug_identifier.append(age_string); @@ -728,11 +730,13 @@ bool PDBSourceLineWriter::GetModuleInfo(PDBModuleInfo *info) { return false; } + // Use the same format that the MS symbol server uses in filesystem + // hierarchies. wchar_t identifier_string[17]; WindowsStringUtils::safe_swprintf( identifier_string, sizeof(identifier_string) / sizeof(identifier_string[0]), - L"%08x%x", signature, age); + L"%08X%x", signature, age); info->debug_identifier = identifier_string; } diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc index cce8549b..34796d19 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -1114,8 +1114,10 @@ string MinidumpModule::code_identifier() const { switch (raw_system_info->platform_id) { case MD_OS_WIN32_NT: case MD_OS_WIN32_WINDOWS: { + // Use the same format that the MS symbol server uses in filesystem + // hierarchies. char identifier_string[17]; - snprintf(identifier_string, sizeof(identifier_string), "%08x%x", + snprintf(identifier_string, sizeof(identifier_string), "%08X%x", module_.time_date_stamp, module_.size_of_image); identifier = identifier_string; break; @@ -1220,9 +1222,11 @@ string MinidumpModule::debug_identifier() const { const MDCVInfoPDB70* cv_record_70 = reinterpret_cast(&(*cv_record_)[0]); if (cv_record_70->cv_signature == MD_CVINFOPDB70_SIGNATURE) { + // Use the same format that the MS symbol server uses in filesystem + // hierarchies. char identifier_string[41]; snprintf(identifier_string, sizeof(identifier_string), - "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%X", + "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%x", cv_record_70->signature.data1, cv_record_70->signature.data2, cv_record_70->signature.data3, @@ -1241,9 +1245,11 @@ string MinidumpModule::debug_identifier() const { const MDCVInfoPDB20* cv_record_20 = reinterpret_cast(&(*cv_record_)[0]); + // Use the same format that the MS symbol server uses in filesystem + // hierarchies. char identifier_string[17]; snprintf(identifier_string, sizeof(identifier_string), - "%08x%x", cv_record_20->signature, cv_record_20->age); + "%08X%x", cv_record_20->signature, cv_record_20->age); identifier = identifier_string; } } diff --git a/src/processor/simple_symbol_supplier.h b/src/processor/simple_symbol_supplier.h index fdfcf0ca..9995161e 100644 --- a/src/processor/simple_symbol_supplier.h +++ b/src/processor/simple_symbol_supplier.h @@ -36,8 +36,9 @@ // directory with a name identical to the corresponding debugging file (pdb). // Within each of these directories, there are subdirectories named for the // debugging file's identifier. For recent pdb files, this is a concatenation -// of the pdb's uuid and age, presented in hexadecimal form, using uppercase -// characters and no dashes or separators. Within that subdirectory, +// of the pdb's uuid and age, presented in hexadecimal form, without any +// dashes or separators. The uuid is in uppercase hexadecimal and the age +// is in lowercase hexadecimal. Within that subdirectory, // SimpleSymbolSupplier expects to find the symbol file, which is named // identically to the debug file, but with a .sym extension. If the original // debug file had a name ending in .pdb, the .pdb extension will be replaced diff --git a/src/processor/testdata/minidump2.dump.out b/src/processor/testdata/minidump2.dump.out index 32fa6c07..c1be1be6 100644 --- a/src/processor/testdata/minidump2.dump.out +++ b/src/processor/testdata/minidump2.dump.out @@ -201,7 +201,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\test_app.exe" - (code_identifier) = "45787a492c000" + (code_identifier) = "45787A492c000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = da006aa3-0d68-4df0-80c8-d782a2273853 (cv_record).age = 1 @@ -233,7 +233,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\ntdll.dll" - (code_identifier) = "411096b4b0000" + (code_identifier) = "411096B4b0000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = 36515fb5-d043-45e4-91f6-72fa2e2878c0 (cv_record).age = 2 @@ -265,7 +265,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\kernel32.dll" - (code_identifier) = "44ab9a84f4000" + (code_identifier) = "44AB9A84f4000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = bce8785c-57b4-4245-a669-896b6a19b954 (cv_record).age = 2 @@ -297,7 +297,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\ole32.dll" - (code_identifier) = "42e5be9313d000" + (code_identifier) = "42E5BE9313d000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = 683b65b2-46f4-4187-96d2-ee6d4c55eb11 (cv_record).age = 2 @@ -329,7 +329,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\advapi32.dll" - (code_identifier) = "411096a79b000" + (code_identifier) = "411096A79b000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = 455d6c5f-184d-45bb-b5c5-f30f82975114 (cv_record).age = 2 @@ -361,7 +361,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\rpcrt4.dll" - (code_identifier) = "411096ae91000" + (code_identifier) = "411096AE91000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = bea45a72-1da1-41da-a3ba-86b3a2031153 (cv_record).age = 2 @@ -393,7 +393,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\gdi32.dll" - (code_identifier) = "43b34feb47000" + (code_identifier) = "43B34FEB47000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = c0ea66be-00a6-4bd7-aef7-9e443a91869c (cv_record).age = 2 @@ -489,7 +489,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\imm32.dll" - (code_identifier) = "411096ae1d000" + (code_identifier) = "411096AE1d000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = 2c17a49c-251b-4c8e-b9e2-ad13d7d9ea16 (cv_record).age = 2 @@ -521,7 +521,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\dbghelp.dll" - (code_identifier) = "4110969aa1000" + (code_identifier) = "4110969Aa1000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = 39559573-e21b-46f2-8e28-6923be9e6a76 (cv_record).age = 1 @@ -553,7 +553,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\version.dll" - (code_identifier) = "411096b78000" + (code_identifier) = "411096B78000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = 180a90c4-0384-463e-82dd-c45b2c8ab76e (cv_record).age = 2 @@ -585,7 +585,7 @@ MDRawModule misc_record.data_size = 0 misc_record.rva = 0x0 (code_file) = "C:\WINDOWS\system32\psapi.dll" - (code_identifier) = "411096cab000" + (code_identifier) = "411096CAb000" (cv_record).cv_signature = 0x53445352 (cv_record).signature = a5c3a1f9-689f-43d8-ad22-8a0929388970 (cv_record).age = 2