blocknotes / wkhtmltopdf-crystal

Crystal C bindings and wrapper for libwkhtmltox library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Invalid memory access (signal 11) at address 0x20

malina opened this issue · comments

Hi!
I use kemal.
I have some code

post "/snapshot" do |env|
  env.response.content_type = "application/json"
  url = env.params.body["url"].as(String)
  url = URI.unescape(url)

  filename = "#{Time.new.epoch}-image.jpg"
  filepath = ::File.join ["/storage", filename]

  img = Wkhtmltopdf::WkImage.new
  img.set_url url
  img.set_output filepath
  img.set "fmt", "jpg"
  img.set "quality", "70"
  img.set "screenWidth", "1088"
  img.set "screenHeight", "680"
  img.convert

  {images: [{url: filepath}]}.to_json
end

After first request to /snapshot i have success result and path image.
But after second request i see error:

QObject::connect: Cannot connect (null)::configurationAdded(QNetworkConfiguration) to QNetworkConfigurationManager::configurationAdded(QNetworkConfiguration)
QObject::connect: Cannot connect (null)::configurationRemoved(QNetworkConfiguration) to QNetworkConfigurationManager::configurationRemoved(QNetworkConfiguration)
QObject::connect: Cannot connect (null)::configurationChanged(QNetworkConfiguration) to QNetworkConfigurationManager::configurationChanged(QNetworkConfiguration)
QObject::connect: Cannot connect (null)::onlineStateChanged(bool) to QNetworkConfigurationManager::onlineStateChanged(bool)
QObject::connect: Cannot connect (null)::configurationUpdateComplete() to QNetworkConfigurationManager::updateCompleted()
Invalid memory access (signal 11) at address 0x20
[4337692939] *CallStack::print_backtrace:Int32 +107
[4337624055] __crystal_sigfault_handler +55
[140736045681594] _sigtramp +26
[4369833558] _ZN35QNetworkConfigurationManagerPrivate13enablePollingEv +22
[4369809925] _ZN28QNetworkConfigurationManagerC2EP7QObject +165
[4369607424] _ZN21QNetworkAccessManager13createRequestENS_9OperationERK15QNetworkRequestP9QIODevice +640
[4345328155] _ZN11wkhtmltopdf22MyNetworkAccessManager13createRequestEN21QNetworkAccessManager9OperationERK15QNetworkRequestP9QIODevice +1963
[4369601041] _ZN21QNetworkAccessManager3getERK15QNetworkRequest +33
[4354134631] _ZN7WebCore20QNetworkReplyHandler18sendNetworkRequestEP21QNetworkAccessManagerRKNS_15ResourceRequestE +439
[4354131783] _ZN7WebCore20QNetworkReplyHandler5startEv +71
[4354120890] _ZN7WebCore29QNetworkReplyHandlerCallQueue5flushEv +186
[4354131487] _ZN7WebCore20QNetworkReplyHandlerC2EPNS_14ResourceHandleENS0_8LoadTypeEb +463
[4354111805] _ZN7WebCore14ResourceHandle5startEPNS_17NetworkingContextE +365
[4352743522] _ZN7WebCore14ResourceHandle6createEPNS_17NetworkingContextERKNS_15ResourceRequestEPNS_20ResourceHandleClientEbb +178
[4351797971] _ZN7WebCore18MainResourceLoader7loadNowERNS_15ResourceRequestE +403
[4351798657] _ZN7WebCore18MainResourceLoader4loadERKNS_15ResourceRequestE[4351702197] _ZN7WebCore11FrameLoader37callContinueLoadAfterNavigationPolicyEPvRKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEEb +37
[4351811813] _ZN7WebCore14PolicyCallback4callEb +69
[4351816489] _ZN7WebCore13PolicyChecker29continueAfterNavigationPolicyENS_12PolicyActionE +505
[4360504075] _ZN7WebCore19FrameLoaderClientQt39dispatchDecidePolicyForNavigationActionEMNS_13PolicyCheckerEFvNS_12PolicyActionEERKNS_16NavigationActionERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEE +203
[4351814749] _ZN7WebCore13PolicyChecker21checkNavigationPolicyERKNS_15ResourceRequestEPNS_14DocumentLoaderEN3WTF10PassRefPtrINS_9FormStateEEEPFvPvS3_S9_bESA_ +1805
[4351698647] _ZN7WebCore11FrameLoader22loadWithDocumentLoaderEPNS_14DocumentLoaderENS_13FrameLoadTypeEN3WTF10PassRefPtrINS_9FormStateEEE +1111
[4351696213] _ZN7WebCore11FrameLoader4loadEPNS_14DocumentLoaderE +197
[4351695679] _ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestERKNS_14SubstituteDataEb +351
[4351695260] _ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestEb +60
[4360219122] _ZN9QWebFrame4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray +1570
[4345343485] _ZN11wkhtmltopdf14ResourceObject4loadEv +2685
[4345347650] _ZN11wkhtmltopdf22MultiPageLoaderPrivate4loadEv +98
[4345485447] _ZN11wkhtmltopdf21ImageConverterPrivate12beginConvertEv +199
[4345364849] _ZN11wkhtmltopdf9Converter7convertEv +33
[4345498813] wkhtmltoimage_convert +13
[4339121093] *Wkhtmltopdf::WkImage#convert<Nil>:(Int32 | Nil) +325
[4339120741] *Wkhtmltopdf::WkImage#convert:(Int32 | Nil) +21
[4337656178] ~procProc(Nil)@src/channelkit-parser.cr:119 +386
[4337715780] *Fiber#run:(IO::FileDescriptor | Nil) +164

Hello Malina.
Thank you for your issue.
I made some minor changes and created a new release to fix.

When called multiple times the library needs to be initialized only once. I added a new option in the constructor and a deinitialize function which should be called before exit.
Please take a look at the README, I added a small example.