1#verbose on 2open bug1.file.tmp 3 4# Symptom: 5# 6# infinite loop in postcat and in delivery agents 7# 8# Cause: 9# 10# Failure to update location info after following a pointer record, 11# while updating a message header record 12# 13# Analysis: 14# 15# This happens with repeated updates of the same message header. 16# After the first update, the update #1 header record sits in the 17# heap at the end of the queue file, and is followed by a reverse 18# pointer to the start of the next message header record or the 19# message body, somewhere in the middle of the queue file. 20# 21# The problem started with update #2 of that same message header. 22# While following the reverse pointer record after the update #1 23# header record to find out the start of the next header or message 24# body, the header updating routine did not update its notion of 25# where it was. Thus, it believed that the next header or body record 26# was located after the reverse pointer record. That was not the 27# middle of the message, but the end of the queue file. The second 28# update would result in an update #2 header record, followed by a 29# reverse pointer to what used to be the end of the queue file, but 30# had meanwhile become the location of the update #2 header record. 31# 32# Thus, anything that tried to deliver mail would loop on the update 33# #2 header record. After update update #3 of the same header, the 34# delivery agent would loop on the update #3 record, etc. 35 36upd_header 1 Subject long header text 37upd_header 1 Subject long header text 38upd_header 1 Subject long header text 39upd_header 1 Subject long header text 40 41close 42