Hello Denis,

Unfortunately I'm of no help here. I don't have much experience solving 
problems like this. I am able to reliably reproduce the crash for wkhtmltopdf 
https://www.google.com out.pdf indeed. It seems the upstream bugtracker 
contains similair cases on FreeBSD, Ubuntu and CentOS, although none contain 
the stacktraces.

I use wkhtmltopdf only for reports generated from our own custom HTML and CSS. 
These seem to work fine as long as we don't point to any https:// sources. For 
us that's not a problem, because we prefer having everything local anyways when 
generating these PDF's. When we include https:// sources we get crashes as 
well, although I'm not sure whether the stacktraces are the same.

Does your report contain any external sources, or is it all local relative to 
the file?
--
Frank

Op zo apr 26 2020, om 14:02 schreef Denis Fondras:
> Hi Frank,
> 
> I am using wkhtmltopdf from Odoo and I noticed it crashes when 
> generating
> reports. This command crashes :
> /usr/local/bin/wkhtmltopdf --header-html 
> /tmp/report.header.tmp.l1ae35ik.html 
> /tmp/report.body.tmp.0.s0vmsl3y.html report.pdf
> 
> Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
> 0x00000186bec30acb in cti_op_call_NotJSFunction ()
> (gdb) bt
> #0  0x00000186bec30acb in cti_op_call_NotJSFunction ()
> #1  0x00000186bec2bd98 in ctiTrampoline ()
> #2  0x00000186beb51e1b in 
> JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, 
> JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) 
> ()
> #3  0x00000186beb5b7fb in JSC::call(JSC::ExecState*, JSC::JSValue, 
> JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) 
> ()
> #4  0x00000186bf33ba68 in 
> WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, 
> WebCore::Event*) ()
> #5  0x00000186bed779ce in 
> WebCore::EventTarget::fireEventListeners(WebCore::Event*, 
> WebCore::EventTargetData*, 
> WTF::Vector<WebCore::RegisteredEventListener, 1ul>&) ()
> #6  0x00000186bed773b6 in 
> WebCore::EventTarget::fireEventListeners(WebCore::Event*) ()
> #7  0x00000186bed7372b in 
> WebCore::EventDispatcher::dispatchEvent(WTF::PassRefPtr<WebCore::Event>) ()
> #8  0x00000186bed725a5 in 
> WebCore::EventDispatchMediator::dispatchEvent(WebCore::EventDispatcher*) 
> const ()
> #9  0x00000186bed7268c in 
> WebCore::EventDispatcher::dispatchEvent(WebCore::Node*, 
> WebCore::EventDispatchMediator const&) ()
> #10 0x00000186bef66eb2 in 
> WebCore::Node::dispatchEvent(WTF::PassRefPtr<WebCore::Event>) ()
> #11 0x00000186bed8fe39 in WebCore::Document::finishedParsing() ()
> #12 0x00000186bf514b7f in 
> WebCore::HTMLDocumentParser::prepareToStopParsing() ()
> #13 0x00000186bf5160dd in 
> WebCore::HTMLDocumentParser::executeScriptsWaitingForStylesheets() ()
> #14 0x00000186bed8a539 in WebCore::Document::removePendingSheet() ()
> #15 0x00000186bf538692 in WebCore::HTMLLinkElement::sheetLoaded() ()
> #16 0x00000186beef5261 in WebCore::CSSStyleSheet::checkLoaded() ()
> #17 0x00000186bf53825f in 
> WebCore::HTMLLinkElement::setCSSStyleSheet(WTF::String const&, 
> WebCore::KURL const&, WTF::String const&, WebCore::CachedCSSStyleSheet 
> const*) ()
> #18 0x00000186bf539a01 in WebCore::CachedCSSStyleSheet::checkNotify() ()
> #19 0x00000186bf5397da in 
> WebCore::CachedCSSStyleSheet::data(WTF::PassRefPtr<WebCore::SharedBuffer>, 
> bool) ()
> #20 0x00000186bf9eb551 in 
> WebCore::CachedResourceRequest::didFinishLoading(WebCore::SubresourceLoader*, 
> double) ()
> #21 0x00000186bfa9048f in 
> WebCore::SubresourceLoader::didFinishLoading(double) ()
> #22 0x00000186bef8cf00 in WebCore::QNetworkReplyHandler::finish() ()
> #23 0x00000186bef8b11f in 
> WebCore::QNetworkReplyHandlerCallQueue::flush() ()
> #24 0x00000186bef8da80 in 
> WebCore::QNetworkReplyWrapper::didReceiveFinished() ()
> #25 0x00000186c05ad148 in QMetaObject::activate(QObject*, QMetaObject 
> const*, int, void**) ()
> #26 0x00000186c03db9db in QNetworkReplyImplPrivate::finished() ()
> #27 0x00000186c05a8643 in QObject::event(QEvent*) ()
> #28 0x00000186bfd4b1b6 in QApplicationPrivate::notify_helper(QObject*, 
> QEvent*) ()
> #29 0x00000186bfd4c8f3 in QApplication::notify(QObject*, QEvent*) ()
> #30 0x00000186c0591eb8 in QCoreApplication::notifyInternal(QObject*, 
> QEvent*) ()
> #31 0x00000186c0592cd6 in 
> QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) 
> ()
> #32 0x00000186c05bf8f7 in 
> QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
> #33 0x00000186c05923e5 in 
> QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 
> ()
> #34 0x00000186bea9a19f in wkhtmltopdf::Converter::convert() ()
> #35 0x00000186beabeb2c in main ()
> 
> 
> If I remove the --header-html (or --footer-html), it works :
> /usr/local/bin/wkhtmltopdf /tmp/report.header.tmp.l1ae35ik.html 
> /tmp/report.body.tmp.0.s0vmsl3y.html z.pdf
> 
> I also noticed that "/usr/local/bin/wkhtmltopdf https://www.google.com"; 
> crashes
> when "/usr/local/bin/wkhtmltopdf --disable-javascript https://www.google.com";
> does not. Not the same trace though :
> 
> Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
> 0x000005550bc3369b in cti_op_construct_NotJSConstruct ()
> (gdb) bt
> #0  0x000005550bc3369b in cti_op_construct_NotJSConstruct ()
> #1  0x000005550bc2dd98 in ctiTrampoline ()
> #2  0x000005550bb53843 in 
> JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, 
> JSC::ScopeChainNode*, JSC::JSObject*) ()
> #3  0x000005550bd331aa in JSC::evaluate(JSC::ExecState*, 
> JSC::ScopeChainNode*, JSC::SourceCode const&, JSC::JSValue) ()
> #4  0x000005550bd2371a in 
> WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode 
> const&, WebCore::DOMWrapperWorld*) ()
> #5  0x000005550bd23a26 in 
> WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&) ()
> #6  0x000005550c4192d2 in 
> WebCore::ScriptElement::executeScript(WebCore::ScriptSourceCode const&) 
> ()
> #7  0x000005550c419938 in 
> WebCore::ScriptElement::execute(WebCore::CachedScript*) ()
> #8  0x000005550c41b2de in 
> WebCore::ScriptRunner::timerFired(WebCore::Timer<WebCore::ScriptRunner>*) ()
> #9  0x000005550bd70aed in 
> WebCore::ThreadTimers::sharedTimerFiredInternal() ()
> #10 0x000005550d5aa881 in QObject::event(QEvent*) ()
> #11 0x000005550cd4d1b6 in QApplicationPrivate::notify_helper(QObject*, 
> QEvent*) ()
> #12 0x000005550cd4e8f3 in QApplication::notify(QObject*, QEvent*) ()
> #13 0x000005550d593eb8 in QCoreApplication::notifyInternal(QObject*, 
> QEvent*) ()
> #14 0x000005550d5c10fd in QTimerInfoList::activateTimers() ()
> #15 0x000005550d5c19a3 in 
> QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
> #16 0x000005550d5943e5 in 
> QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 
> ()
> #17 0x000005550ba9c19f in wkhtmltopdf::Converter::convert() ()
> #18 0x000005550bac0b2c in main ()
> 
> Do you have any clue to help debugging this issue ?
>

Reply via email to