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