[Spambayes] New web training interface for pop3proxy

Paul Moore lists@morpheus.demon.co.uk
Sat Nov 23 15:49:16 2002


"Moore, Paul" <Paul.Moore@atosorigin.com> writes:

> (This is from memory, as it happened on my home setup and I'm at
> work now, so I apologise if it's a bit vague).

It's just happened again. So I can diagnose a bit better...

>> It's "no". 8-) Like I say, no-one's reported it locking before, and
>> I've never seen it. You usually get a traceback when something goes
>> wrong. So your console says something like:
>>
>> Loading database... Done BayesProxyListener listening on port 110  .
>> UserInterfaceListener listening on port 8880                       .

Console screenshot:

Loading database... Done.
BayesProxyListener listening on port 8110.
UserInterfaceListener listening on port 8880.

>> and nothing else, and the process is still running, but you can't
>> get a page served to your browser? What error message do you get
>> from the browser? If it's one of those pointless IE error pages,
>> could you try telnetting to port 8880 and saying "GET / HTTP/1.0"?
>> Can you even connect with telnet? How about port 110?

The browser shows "Training..." and nothing more. The status bar shows
"Opening page http://localhost:8880/review..." and the progress bar is
part way across and stuck.

Python is running at 90%+ CPU. Looks like it's in a loop somewhere.

> I can't do a telnet at the moment to check.

Telnet isn't responding. The thing's almost certainly in a loop.

> It was a dbm file.
>
> The command line was pop3proxy.py -d -l 8110 localhost
>
> (proxying a local POP server on port 110 with the proxy on port 8110
> using a DBM file). Working directory was the directory of the program.
> No bayescustomize.ini file.

The UI showed the database as having 0 ham and 0 spam, but it was
doing this yesterday, and everything worked fine then. Looks like some
sort of database corruption, but a subtle one...

OK, I ran it with Corpus.Verbose = True, and it seems to be locking up
just after printing "training with" in Bayes.Trainer.train

Further checking... it's in self._add_msg(wordstream, is_spam) in
classifier.Bayes. Best I can locate, it's locking up trying to store a
None in self.wordinfo. Specifically,

    # Needed to tell a persistent DB that the content changed.
    wordinfo[word] = record

locks up with record = None (and word = electronics, but I doubt
that's relevant :-))

I can post my hammie.db, but it's 1.4M (360K zipped) so I won't bother
unless someone thinks it's going to help significantly... (BTW, some
sort of dumper of a spambayes database file might be helpful in
diagnosing problems like this - at least a structure validator. I
don't know how possible this is, and as this area is changing rapidly
right now, I'll just put it on the TODO list for the moment.

Paul.
-- 
This signature intentionally left blank



More information about the Spambayes mailing list