Test demo ,Two requst will be panic
package main
import (
"log"
"net/http"
"os"
pdf "github.com/adrg/go-wkhtmltopdf"
)
func PrintHandle(w http.ResponseWriter, r *http.Request) {
if err := pdf.Init(); err != nil {
log.Fatal(err)
}
defer pdf.Destroy()
// Create object from file.
object, err := pdf.NewObject("https://www.baidu.com")
if err != nil {
log.Fatal(err)
}
// Create converter.
converter, err := pdf.NewConverter()
if err != nil {
log.Fatal(err)
}
defer converter.Destroy()
// Add created objects to the converter.
converter.Add(object)
// Set converter options.
converter.Title = "Sample document"
converter.PaperSize = pdf.A4
// Convert objects and save the output PDF document.
outFile, err := os.OpenFile("output.pdf", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0755)
if err != nil {
log.Fatal(err)
}
defer outFile.Close()
if err := converter.Run(outFile); err != nil {
log.Fatal(err)
}
w.Write([]byte("ok"))
}
func main() {
http.HandleFunc("/", PrintHandle)
http.ListenAndServe("127.0.0.1:10000", nil)
}
Panic Data
WARNING: QApplication was not created in the main() thread.
QObject::startTimer: QTimer can only be used with threads started with QThread
QObject::startTimer: QTimer can only be used with threads started with QThread
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()
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x7f6a131f884e]
runtime stack:
runtime.throw({0x65eb86, 0x7f6a135b7028})
/usr/local/go/src/runtime/panic.go:1198 +0x71
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:719 +0x396
goroutine 6 [syscall]:
runtime.cgocall(0x5f51c0, 0xc00015b8f0)
/usr/local/go/src/runtime/cgocall.go:156 +0x5c fp=0xc00015b8c8 sp=0xc00015b890 pc=0x4067dc
github.com/adrg/go-wkhtmltopdf._Cfunc_wkhtmltopdf_convert(0x7f69d80154f0)
_cgo_gotypes.go:137 +0x4c fp=0xc00015b8f0 sp=0xc00015b8c8 pc=0x5ee48c
github.com/adrg/go-wkhtmltopdf.(*Converter).Run.func1(0xc0000b6000)
/home/aveyuan/go/pkg/mod/github.com/adrg/[email protected]/converter.go:304 +0x46 fp=0xc00015b928 sp=0xc00015b8f0 pc=0x5ef766
github.com/adrg/go-wkhtmltopdf.(*Converter).Run(0xc0000b6000, {0x6a64e0, 0xc0000ba008})
/home/aveyuan/go/pkg/mod/github.com/adrg/[email protected]/converter.go:304 +0x73 fp=0xc00015b990 sp=0xc00015b928 pc=0x5ef3d3
main.PrintHandle({0x6aaea0, 0xc0000aa000}, 0x0)
/home/aveyuan/project/go/fkpdf/main.go:44 +0x2d7 fp=0xc00015ba48 sp=0xc00015b990 pc=0x5f4c57
net/http.HandlerFunc.ServeHTTP(0x0, {0x6aaea0, 0xc0000aa000}, 0x0)
/usr/local/go/src/net/http/server.go:2047 +0x2f fp=0xc00015ba70 sp=0xc00015ba48 pc=0x5dcbcf
net/http.(*ServeMux).ServeHTTP(0x0, {0x6aaea0, 0xc0000aa000}, 0xc000184100)
/usr/local/go/src/net/http/server.go:2425 +0x149 fp=0xc00015bac0 sp=0xc00015ba70 pc=0x5de4c9
net/http.serverHandler.ServeHTTP({0xc000090030}, {0x6aaea0, 0xc0000aa000}, 0xc000184100)
/usr/local/go/src/net/http/server.go:2879 +0x43b fp=0xc00015bb80 sp=0xc00015bac0 pc=0x5df7fb
net/http.(*conn).serve(0xc000110960, {0x6abca0, 0xc000100de0})
/usr/local/go/src/net/http/server.go:1930 +0xb08 fp=0xc00015bfb8 sp=0xc00015bb80 pc=0x5dbf28
net/http.(*Server).Serve·dwrap·87()
/usr/local/go/src/net/http/server.go:3034 +0x2e fp=0xc00015bfe0 sp=0xc00015bfb8 pc=0x5e014e
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc00015bfe8 sp=0xc00015bfe0 pc=0x465281
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x7f69e860bf58, 0x72)
/usr/local/go/src/runtime/netpoll.go:234 +0x89
internal/poll.(*pollDesc).wait(0xc000144000, 0xc00002a000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000144000)
/usr/local/go/src/internal/poll/fd_unix.go:402 +0x22c
net.(*netFD).accept(0xc000144000)
/usr/local/go/src/net/fd_unix.go:173 +0x35
net.(*TCPListener).accept(0xc00000e0d8)
/usr/local/go/src/net/tcpsock_posix.go:140 +0x28
net.(*TCPListener).Accept(0xc00000e0d8)
/usr/local/go/src/net/tcpsock.go:262 +0x3d
net/http.(*Server).Serve(0xc000142000, {0x6aacf0, 0xc00000e0d8})
/usr/local/go/src/net/http/server.go:3002 +0x394
net/http.(*Server).ListenAndServe(0xc000142000)
/usr/local/go/src/net/http/server.go:2931 +0x7d
net/http.ListenAndServe(...)
/usr/local/go/src/net/http/server.go:3185
main.main()
/home/aveyuan/project/go/fkpdf/main.go:52 +0x65
goroutine 7 [IO wait]:
internal/poll.runtime_pollWait(0x7f69e860bd88, 0x72)
/usr/local/go/src/runtime/netpoll.go:234 +0x89
internal/poll.(*pollDesc).wait(0xc000144100, 0xc000158000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000144100, {0xc000158000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000144100, {0xc000158000, 0x400, 0xc00015f6b0})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000010040, {0xc000158000, 0x400, 0xc000100f38})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000100f30, {0xc000158000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc00006c300)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).ReadSlice(0xc00006c300, 0x40)
/usr/local/go/src/bufio/bufio.go:360 +0x2f
bufio.(*Reader).ReadLine(0xc00006c300)
/usr/local/go/src/bufio/bufio.go:389 +0x27
net/textproto.(*Reader).readLineSlice(0xc000100f90)
/usr/local/go/src/net/textproto/reader.go:57 +0x99
net/textproto.(*Reader).ReadLine(...)
/usr/local/go/src/net/textproto/reader.go:38
net/http.readRequest(0xc000010040)
/usr/local/go/src/net/http/request.go:1029 +0x79
net/http.(*conn).readRequest(0xc000110a00, {0x6abbf8, 0xc000028280})
/usr/local/go/src/net/http/server.go:966 +0x225
net/http.(*conn).serve(0xc000110a00, {0x6abca0, 0xc000100de0})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 34 [IO wait]:
internal/poll.runtime_pollWait(0x7f69e860be70, 0x72)
/usr/local/go/src/runtime/netpoll.go:234 +0x89
internal/poll.(*pollDesc).wait(0xc000144080, 0xc000090041, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000144080, {0xc000090041, 0x1, 0x1})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000144080, {0xc000090041, 0x0, 0x0})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000010038, {0xc000090041, 0x0, 0x0})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).backgroundRead(0xc000090030)
/usr/local/go/src/net/http/server.go:672 +0x3f
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:668 +0xcf
exit status 2