pdfium аварийно завершает работу со странным стеком вызовов на сервере grpc через p / invoke - PullRequest
0 голосов
/ 31 мая 2019

Я создаю синтаксический анализатор .Net Pdf с помощью собственного двоичного файла pdfium через p / invoke.Поскольку Pdfium не ориентирован на многопотоковое исполнение, я помещаю его в сервер gRPC (net45), чтобы включить сценарии параллельной обработки.

Когда код развернут на Windows Server, наша система ведения журналов обнаружила несколько сбоев, которые я пока не нашел способ воспроизвести локально.Однако стек вызовов кажется мне очень странным (скопировано ниже).

pdfium_x64!FPDF_GetNamedDest+0x193544
pdfium_x64!FPDF_GetNamedDest+0xe5985
pdfium_x64!FPDF_GetNamedDest+0xe4c67
pdfium_x64!FPDF_GetNamedDest+0xe3e6c
pdfium_x64!FPDF_GetNamedDest+0x10e21f
pdfium_x64!FPDF_GetNamedDest+0xcaed9
pdfium_x64!FPDF_GetNamedDest+0x10fe96
pdfium_x64!FPDF_GetNamedDest+0x11063c
pdfium_x64!FPDF_GetNamedDest+0xd5055
pdfium_x64!FPDF_GetNamedDest+0x726e5
pdfium_x64!FPDFLink_CloseWebLinks+0x844
pdfium_x64!FPDFBitmap_Destroy+0xbc
pdfium_x64!FPDF_RenderPageBitmap+0x176
grpc_core!DomainBoundILStubClass.IL_STUB_PInvoke+0xbd
pdfparser!MyServer.PDF.PdfPage.RenderBitmap+0x185

pdfium_x64! FPDF_RenderPageBitmap + 0x176 - метод, который я активно вызываю.Стек вызовов после этой конкретной строки кажется мне невозможным.Все методы pdfium с префиксом FPDF_ должны быть открытыми API, которые должны вызываться вызывающей стороной.Я определенно не вызываю ни один из FPDF_GetNamedDest или FPDFLink_CloseWebLinks, и я искал в исходном коде pdfium, они также не вызывают друг друга.

Я сомневаюсь, что этот сбой должен иметь какое-то отношение к grpc / pinvoke,но я не мог найти дополнительную информацию о проблеме.Может кто-нибудь помочь объяснить, что является причиной этого странного стека / сбоя вызова и, возможно, как решить?

Большое спасибо!

...