https://bz.apache.org/SpamAssassin/show_bug.cgi?id=8237

            Bug ID: 8237
           Summary: TxRep/AWL failure using GDBM_File storage
           Product: Spamassassin
           Version: 4.0.1
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Libraries
          Assignee: dev@spamassassin.apache.org
          Reporter: sid...@sidney.com
  Target Milestone: Undefined

This bug can be reproduced by editing t/sa_txrep.t to add this line to the
tstprefs

  autowelcome_list_db_modules GDBM_File

That breaks the test. I tracked it down to a bug in the remove_entry function
in DBBasedAddrList.pm where the keys are deleted in a loop that starts with

  while (my ($key, $value) = each %{$self->{accum}}) {

According to the perldoc https://perldoc.perl.org/functions/each after
explaining that the code we use is safe to use with hashes as an explicit
exception to the ordering behaviour rule against deleting elements of a hash in
an each loop, it goes on to say

"Tied hashes may have a different ordering behaviour to perl's hash
implementation."

And apparently DB_File and SDBM_File don't break when we do that, but GDBM_File
does.

I'm testing a patch now and will upload it soon.

Unfortunately, this does not explain bug 8236 as the SQL code does not use tied
hashes.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to