Problem Summary:
Deleting transactions that have been added with the -:NOREFS option fails
and blank refs.ptr files are added to each symbol directory.
Expected results after delete:
Symbol files are deleted from the symbol store
Actual results after delete:
Symbol files are not deleted and blank refs.ptr files are added to each
symbol directory
Steps I used to repro the problem:
1. Add symbols to the store:
C:\Utils >symstore add /f "\\buildserver\c$\documents and settings\nick\my
documents\visual studio 2005\projects\sehterm\*.pdb" /s
\\symbolserver\testsymstore$ /t "Nicks Programs" /v "beta" /c
"TestAddFromIndex" /o /compress /r -:NOREFS
SYMSTORE MESSAGE: 0 alternate indexers registered
SYMSTORE MESSAGE: LastId.txt reported id 0
SYMSTORE MESSAGE: History.txt reported id 0
SYMSTORE MESSAGE: Existing logs reported id 1
SYMSTORE MESSAGE: Final id is 0000000001
SYMSTORE MESSAGE: Copying \\buildserver\c$\documents and settings\nick\my doc
uments\visual studio 2005\projects\sehterm\debug\SehTerm.pdb to
\\symbolserver\testsymstore$\SehTerm.pdb\9738138F5E6E433098D30A18ECC3F40019\SehTerm.pd_ [Force
: T, Compress: T]
SYMSTORE MESSAGE: Copying \\buildserver\c$\documents and settings\nick\my doc
uments\visual studio 2005\projects\sehterm\release\SehTerm.pdb to
\\symbolserver\testsymstore$\SehTerm.pdb\2036A4A02E104374A6F110F56B37DA214\SehTerm.pd_ [Forc
e: T, Compress: T]
SYMSTORE MESSAGE: Copying \\buildserver\c$\documents and settings\nick\my doc
uments\visual studio 2005\projects\sehterm\SehTerm\Debug\vc80.pdb to
\\symbolserver\testsymstore$\vc80.pdb\C51AAC536C2346D4BCFBA4F35E2A6408\vc80.pd_ [Force: T
, Compress: T]
SYMSTORE MESSAGE: Copying \\buildserver\c$\documents and settings\nick\my doc
uments\visual studio 2005\projects\sehterm\SehTerm\Release\vc80.pdb to
\\symbolserver\testsymstore$\vc80.pdb\60A1AF9C34124C58854F948AB7E50194\vc80.pd_ [Force:
T, Compress: T]
SYMSTORE: Number of files stored = 4
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 0
2. My symbol store looks like this after:
C:\Utils >tree \\buildserver\testsymstore$ /F
Folder PATH listing
Volume serial number is 00500041 D4D0:C96D
\\symbolserver\TESTSYMSTORE$.
│ index.txt
│ pingme.txt
│
├───000Admin
│ 0000000001
│ history.txt
│ lastid.txt
│ server.txt
│
├───SehTerm.pdb
│ ├───2036A4A02E104374A6F110F56B37DA214
│ │ SehTerm.pd_
│ │
│ └───9738138F5E6E433098D30A18ECC3F40019
│ SehTerm.pd_
│
└───vc80.pdb
├───60A1AF9C34124C58854F948AB7E50194
│ vc80.pd_
│
└───C51AAC536C2346D4BCFBA4F35E2A6408
vc80.pd_
3. Try to delete symbols from store:
C:\Utils\SystemDump\x64>symstore del /i 0000000001 /s \\symbolserver\testsymst
ore$
Finding ID... 0000000002
SYMSTORE ERROR: Class: Server. Desc: \\symbolserver\testsymstore$\SehTerm.pdb\
9738138F5E6E433098D30A18ECC3F40019\refs.ptr doesn't contain any valid
transactio
n history.
SYMSTORE ERROR: Class: Server. Desc: \\symbolserver\testsymstore$\vc80.pdb\C51
AAC536C2346D4BCFBA4F35E2A6408\refs.ptr doesn't contain any valid transaction
his
tory.
SYMSTORE ERROR: Class: Server. Desc: \\symbolserver\testsymstore$\SehTerm.pdb\
2036A4A02E104374A6F110F56B37DA214\refs.ptr doesn't contain any valid
transaction
history.
SYMSTORE ERROR: Class: Server. Desc: \\symbolserver\testsymstore$\vc80.pdb\60A
1AF9C34124C58854F948AB7E50194\refs.ptr doesn't contain any valid transaction
his
tory.
SYMSTORE: Number of references deleted = 4
SYMSTORE: Number of files/pointers deleted = 0
SYMSTORE: Number of errors = 8
4. Check contents of symbol store – .ptr files have been added and the .pd_
files still exist:
C:\Utils >tree \\symbolserver\testsymstore$ /F
Folder PATH listing
Volume serial number is 00500041 D4D0:C96D
\\symbolserver\TESTSYMSTORE$.
│ index.txt
│ pingme.txt
│
├───000Admin
│ 0000000001.deleted
│ history.txt
│ lastid.txt
│ server.txt
│
├───SehTerm.pdb
│ ├───2036A4A02E104374A6F110F56B37DA214
│ │ refs.ptr
│ │ SehTerm.pd_
│ │
│ └───9738138F5E6E433098D30A18ECC3F40019
│ refs.ptr
│ SehTerm.pd_
│
└───vc80.pdb
├───60A1AF9C34124C58854F948AB7E50194
│ refs.ptr
│ vc80.pd_
│
└───C51AAC536C2346D4BCFBA4F35E2A6408
refs.ptr
vc80.pd_
--
Regards,
Nicholas Vasile
Deletes using transactions are not expected to work if the transactions were
added with the-:NOREFS option because the add transactions do not
create/update the refs.ptr file for each .pdb. If there were no entries
added/created in the refs.ptr files for an add transaction then symstore.exe
can not currently figure out whether other transactions reference each .pdb
included in the transaction when you try to delete that transaction so they
are not deleted.
The other anomoly I noticed in that a blank refs.ptr file is added as part
of the delete transaction can be considered a minor bug.
--
Regards,
Nicholas Vasile