INN 2.5, inn-CURRENT-20090103 Issues
Julien ÉLIE
julien at trigofacile.com
Mon Jan 5 21:47:35 UTC 2009
Hi William,
> When running: news.daily expireover lowmark I receive the following message:
> - Use of uninitialized value in string eq at (eval 139) line 3
> I don't know what that message means.
Yet, innreport does not have Perl warnings on in CURRENT.
I do not understand why you have that warning. Maybe it is not
innreport, but I do not see what else it can be.
> Perl is enabled and running the same Cleanfeed as before.
By the way, is your innreport.conf file totally new and installed
from INN CURRENT? It has changed since INN 2.4.2.
> The biggest reason for upgrading to INN 2.5 was to get rid of this assertion connection.c problem. Well the assertion issue is
> still a problem:
>
> 2009-01-04 19:39:50 innfeed: assertion -- cxn != NULL -- failed in file connection.c line 1171
> 2009-01-04 20:59:43 innfeed: assertion -- cxn != NULL -- failed in file connection.c line 1171
Oh, nice catch. It is in cxnCheckstate() in connection.c,
called only once in host.c:
void hostSendArticle (Host host, Article article)
{
if (host->queued == NULL)
{
Connection cxn = NULL ;
if (host->params->minQueueCxn) {
// for loops with cxn = host->connections[idx]
} else {
// for loops with cxn = host->connections[idx]
}
/* this'll happen if all connections are feeding and all
their queues are full, or if those not feeding are asleep. */
d_printf (1, "Couldn't give the article to a connection\n") ;
if (!cxnCheckstate (cxn)) <--------- Here is the issue.
{
}
}
}
I believe we should check whether the connection is still here.
It may not have been affected during a for loop.
I did not find a function which actually made cxn NULL in hostSendArticle().
However, in one of a possible branch, we have:
for (idx = 0 ; idx < host->maxConnections ; idx++)
if (!host->cxnActive [idx] && !host->cxnSleeping [idx] &&
(cxn = host->connections[idx]) != host->notThisCxn)
I believe we could have a case where all the connections to a host
are inactive and sleeping. Therefore, cxn will still be NULL
and passed to cxnCheckstate().
Of course, I suggest that patch:
Index: host.c
===================================================================
--- host.c (révision 8263)
+++ host.c (copie de travail)
@@ -1783,7 +1783,7 @@
delArticle (extraRef) ;
remArticle (article,&host->processed,&host->processedTail) ;
- if (!cxnCheckstate (cxn))
+ if (cxn != NULL && !cxnCheckstate (cxn))
{
host->artsToTape++ ;
host->gArtsToTape++ ;
Could you please try it and see if innfeed works fine?
> Except for the above it appears to be running very well so far.
Do you have other lines in connection.c where assertions are raised?
--
Julien ÉLIE
« Les amis de la vérité sont ceux qui la cherchent,
et non ceux qui se vantent de l'avoir trouvée. » (Condorcet)
More information about the inn-workers
mailing list