Re: 2.9.1 Beta1 available
On Tue, 21 Jan 2014, Scott Kitterman wrote:
> Libmilter is whichever version is shipped with Sendmail 8.14.4.
>
> I have a suspicion that the problem is related to the amount of time it
> takes for the milter to shut down as fiddling with
> MILTERTEST_RETRY_SPEED_FACTOR seems to help and the number of failing
> tests varies per architecture in the Debian archive. It also,
> sometimes, varies when I retry with the same package on the same
> architecture.
The issue is that the configuration object (of which there should be only
one) appears to have a reference count that isn't zero when something
tries to destroy the object. The reference count increases when a new
client connects, and decreases when a client disconnects. For a test
where there's only ever one client, the test should really never fail.
Given what you said above, it looks like there's a race condition between
a client connecting (and incrementing the refcount) and miltertest giving
up, closing the connection, and making a new attempt. But this would
suggest there's possibly an issue with libmilter; it shouldn't be possible
to complete connection setup without going through connection shutdown.
I'll see if there's anything like this known.
> If you can give me the command line to invoke one of those tests to get
> a core, I'll do it by hand and see what I get.
After a full build, you'd have to do this:
- add these to the .lua file for the failing test, right before
mt.connect():
mt.set_timeout(300)
mt.sleep(15)
- add "-v -v -v" to the miltertest command in the test shell script; this
will cause the pid of the child opendkim to be shown when it's created
- run the script; the child will be created, but no traffic will be sent
to it for 15 seconds (the mt.sleep())
- attach gdb to the child opendkim (the pid will be shown in the script
output)
- miltertest will resume and you should see the failure resulting in
SIGABRT; the mt.set_timeout() call will keep miltertest waiting for five
minutes while you poke around
- use whatever gdb commands you like to poke around, e.g. "thread apply
all bt"
- "quit" when you're done; miltertest will complete (but fail, of course)
-MSK
Received on Tue Jan 21 2014 - 21:22:33 PST
This archive was generated by hypermail 2.3.0
: Tue Jan 21 2014 - 21:27:01 PST