Home | History | Annotate | Line # | Download | only in cleanup
      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