HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [hylafax-users] FaxQueuer crashing/exiting after two jobs submitted at once



Dan Brummer wrote:

FaxQueuer crashing on same time job submits but in 4.3.0 it gave me a 'Assertion failed "QLink::remove: item not on a list", file "QLink.c++" line 53' error.


I wasn't getting this error after two jobs being submitted at once (I don't think). Rather, I was hitting this issue when the traffic in the queue was heavy and a job failed. It was nearly impossible to reproduce. The timings had to be just right, and I could never reproduce it in the lab.

The solution in my case was to change a few faxq calls of

job.remove();

to become

if (job.isOnList()) job.remove();

Which basically is to say that if a job fails and we go to delete it and find that it isn't on a list to not worry about it and just proceed on as if the job list removal had been handled normally and proceed on with the job deletion. I have made those adjustments to HylaFAX+ and they're in the latest releases there. I've not had a repetition of that issue after making those changes.

The particular one that I believe I was hitting on badly was the one in faxQueueApp::setDead. FaxQueuer is asynchronous - meaning that we'll have sleeping jobs or sending jobs or preparing jobs or any other number of activities that involve signals or the dispatcher and that just about any function can be interrupted at just about any time in order to handle some asynchronous event... so job lists can actually change in the middle of a loop through that list. I had previously blocked signals during most of the job list iterations - the main exception being that in runScheduler which I didn't block because I (needlessly, as it turns out) feared that a long-running runScheduler process would slow other responsiveness down too much. And I kept hitting into the QLink::remove issue. So my assumption was that the runScheduler was running and that, for some reason the job was at least temporarily removed from the list when some timer expired and fired off faxQueueApp::setDead.

So, as I said, the change I mention solved my instances of this error, however they were not triggered by the same catalysts as your error seems to be. Hopefully this information can help you resolve yours. I'd also be delighted to take a more active part in resolving this for you.

Thanks,

Lee.


____________________ HylaFAX(tm) Users Mailing List _______________________ To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*




Project hosted by iFAX Solutions