1 #verbose on 2 open 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 36 upd_header 1 Subject long header text 37 upd_header 1 Subject long header text 38 upd_header 1 Subject long header text 39 upd_header 1 Subject long header text 40 41 close 42