lkosson / reportviewercore

Recompilation of Microsoft.ReportViewer for .NET Core 3.1+
408 stars 119 forks source link

Export PDF in linux is error sometimes #170

Closed abigaelvs closed 7 months ago

abigaelvs commented 8 months ago

So, i have this library installed on my Linux Docker Container service. I have installed wine and libgdiplus also. I've been using this library for like 1 year and it works just fine. But lately sometimes it throws error like this when rendering report. So far this has happened twice. But after i restart the container, it went back to normal

Does anyone know the cause or how to fix this?

Fatal error. 0xC0000005 at Microsoft.ReportingServices.Rendering.RichText.Win32.ScriptShape(Microsoft.ReportingServices.Rendering.RichText.Win32DCSafeHandle, Microsoft.ReportingServices.Rendering.RichText.ScriptCacheSafeHandle ByRef, System.String, Int32, Int32, Microsoft.ReportingServices.Rendering.RichText.SCRIPT_ANALYSIS ByRef, Int16[], Int16[], Microsoft.ReportingServices.Rendering.RichText.SCRIPT_VISATTR[], Int32 ByRef) at Microsoft.ReportingServices.Rendering.RichText.TextRun.ShapeAndPlace(Microsoft.ReportingServices.Rendering.RichText.Win32DCSafeHandle, Microsoft.ReportingServices.Rendering.RichText.FontCache) at Microsoft.ReportingServices.Rendering.RichText.LineBreaker.GetLine(Microsoft.ReportingServices.Rendering.RichText.Paragraph, Microsoft.ReportingServices.Rendering.RichText.TextLine, Microsoft.ReportingServices.Rendering.RichText.Win32DCSafeHandle, Microsoft.ReportingServices.Rendering.RichText.FontCache, Microsoft.ReportingServices.Rendering.RichText.FlowContext, Single, Single, Single, System.Collections.Generic.Stack1<Int32>, System.Collections.Generic.Stack1, Int32) at Microsoft.ReportingServices.Rendering.RichText.LineBreaker.FlowParagraph(Microsoft.ReportingServices.Rendering.RichText.Paragraph, Directions, Microsoft.ReportingServices.Rendering.RichText.Win32DCSafeHandle, Single, Microsoft.ReportingServices.Rendering.RichText.FontCache, Microsoft.ReportingServices.Rendering.RichText.FlowContext, Boolean, System.Drawing.SizeF, Int32 ByRef) at Microsoft.ReportingServices.Rendering.RichText.LineBreaker.Flow(Microsoft.ReportingServices.Rendering.RichText.TextBox, Microsoft.ReportingServices.Rendering.RichText.Win32DCSafeHandle, Single, Microsoft.ReportingServices.Rendering.RichText.FontCache, Microsoft.ReportingServices.Rendering.RichText.FlowContext, Boolean, Single ByRef) at Microsoft.ReportingServices.Rendering.RichText.LineBreaker.Flow(Microsoft.ReportingServices.Rendering.RichText.TextBox, System.Drawing.Graphics, Microsoft.ReportingServices.Rendering.RichText.FontCache, Microsoft.ReportingServices.Rendering.RichText.FlowContext, Boolean, Single ByRef) at Microsoft.ReportingServices.Rendering.RichText.TextBox.MeasureFullHeight(Microsoft.ReportingServices.Rendering.RichText.TextBox, System.Drawing.Graphics, Microsoft.ReportingServices.Rendering.RichText.FontCache, Microsoft.ReportingServices.Rendering.RichText.FlowContext, Single ByRef) at Microsoft.ReportingServices.Rendering.HPBProcessing.TextBox.CalculateVerticalSize(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext) at Microsoft.ReportingServices.Rendering.HPBProcessing.TextBox.DetermineVerticalSize(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, Double, Double, System.Collections.Generic.List1<Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem>, Boolean ByRef, Boolean) at Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem.CalculateVertical(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, Double, Double, Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem[], System.Collections.Generic.List1, Boolean ByRef, Boolean, System.Nullable1<Double>) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix+RowInfo.CalculateVerticalLastDetailCell(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, Boolean, Boolean) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateDetailCell(Microsoft.ReportingServices.OnDemandReportRendering.Tablix, Microsoft.ReportingServices.OnDemandReportRendering.TablixMember, Int32, RowInfo, Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.TraverseColumnMembers(Microsoft.ReportingServices.OnDemandReportRendering.Tablix, Microsoft.ReportingServices.OnDemandReportRendering.TablixMember, Int32, RowInfo, Boolean, Double, Double, Int32 ByRef, Int32 ByRef, System.Collections.Generic.List1, Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.TraverseColumnMembers(Microsoft.ReportingServices.OnDemandReportRendering.Tablix, Microsoft.ReportingServices.OnDemandReportRendering.TablixMember, Int32, RowInfo, Boolean, Double, Double, Int32 ByRef, Int32 ByRef, System.Collections.Generic.List1<Int32>, Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateDetailRow(Microsoft.ReportingServices.OnDemandReportRendering.Tablix, Microsoft.ReportingServices.OnDemandReportRendering.TablixMember, Int32, Int32, Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateRowMemberChildren(Microsoft.ReportingServices.OnDemandReportRendering.Tablix, Microsoft.ReportingServices.OnDemandReportRendering.TablixMember, Int32, Boolean, Int32, Int32, Int32, Boolean, Boolean, LevelInfo, Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateRowMemberChildren(Microsoft.ReportingServices.OnDemandReportRendering.Tablix, Microsoft.ReportingServices.OnDemandReportRendering.TablixMember, Int32, Boolean, Int32, Int32, Int32, Boolean, Boolean, LevelInfo, Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateTablixRows(Microsoft.ReportingServices.OnDemandReportRendering.Tablix, Microsoft.ReportingServices.OnDemandReportRendering.TablixMember, Int32, Boolean, Int32, Int32, System.Collections.Generic.List1 ByRef, Boolean, Boolean ByRef, Boolean, CreateItemsContext, Double, Double, Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateTablixItems(Microsoft.ReportingServices.OnDemandReportRendering.Tablix, Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, CreateItemsContext, Double, Double) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateVertically(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, CreateItemsContext, Double, Double, Double) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.DetermineVerticalSize(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, Double, Double, System.Collections.Generic.List1<Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem>, Boolean ByRef, Boolean) at Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem.CalculateVertical(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, Double, Double, Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem[], System.Collections.Generic.List1, Boolean ByRef, Boolean, System.Nullable1<Double>) at Microsoft.ReportingServices.Rendering.HPBProcessing.PageItemContainer.DetermineContentVerticalSize(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, Double, Double, System.Collections.Generic.List1, Boolean ByRef, Boolean, Boolean, Boolean) at Microsoft.ReportingServices.Rendering.HPBProcessing.PageItemContainer.DetermineVerticalSize(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, Double, Double, System.Collections.Generic.List1<Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem>, Boolean ByRef, Boolean) at Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem.CalculateVertical(Microsoft.ReportingServices.Rendering.HPBProcessing.PageContext, Double, Double, Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem[], System.Collections.Generic.List1, Boolean ByRef, Boolean, System.Nullable1<Double>) at Microsoft.ReportingServices.Rendering.HPBProcessing.ReportSection.NextPage(Microsoft.ReportingServices.Rendering.HPBProcessing.RPLWriter, Int32, Int32, Double, Double, Microsoft.ReportingServices.Rendering.HPBProcessing.ReportSection, Boolean) at Microsoft.ReportingServices.Rendering.HPBProcessing.Report.NextPage(Microsoft.ReportingServices.Rendering.HPBProcessing.RPLWriter, Int32) at Microsoft.ReportingServices.Rendering.HPBProcessing.HPBProcessing.NextPage() at Microsoft.ReportingServices.Rendering.HPBProcessing.HPBProcessing.Init(Microsoft.ReportingServices.OnDemandReportRendering.Report, Microsoft.ReportingServices.Rendering.HPBProcessing.PaginationSettings, Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream, System.Collections.Hashtable ByRef) at Microsoft.ReportingServices.Rendering.ImageRenderer.PDFRenderer.Render(Microsoft.ReportingServices.OnDemandReportRendering.Report, System.Collections.Specialized.NameValueCollection, System.Collections.Hashtable, Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream) at Microsoft.ReportingServices.Rendering.ImageRenderer.RendererBase.Render(Microsoft.ReportingServices.OnDemandReportRendering.Report, System.Collections.Specialized.NameValueCollection, System.Collections.Specialized.NameValueCollection, System.Collections.Specialized.NameValueCollection, System.Collections.Hashtable ByRef, Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream) at Microsoft.ReportingServices.ReportProcessing.Execution.RenderReport.InvokeRenderer(Microsoft.ReportingServices.OnDemandReportRendering.IRenderingExtension, Microsoft.ReportingServices.OnDemandReportRendering.Report, System.Collections.Specialized.NameValueCollection, System.Collections.Specialized.NameValueCollection, System.Collections.Specialized.NameValueCollection, System.Collections.Hashtable ByRef, Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream) at Microsoft.ReportingServices.ReportProcessing.Execution.RenderReport.Execute(Microsoft.ReportingServices.OnDemandReportRendering.IRenderingExtension) at Microsoft.Reporting.LocalService.CreateSnapshotAndRender(Microsoft.ReportingServices.ReportProcessing.ReportProcessing, Microsoft.ReportingServices.OnDemandReportRendering.IRenderingExtension, Microsoft.ReportingServices.ReportProcessing.ProcessingContext, Microsoft.ReportingServices.ReportProcessing.RenderingContext, SubreportCallbackHandler, Microsoft.ReportingServices.ReportProcessing.ParameterInfoCollection, Microsoft.ReportingServices.Diagnostics.DatasourceCredentialsCollection) at Microsoft.Reporting.LocalService.Render(System.String, System.String, System.String, Boolean, System.Collections.IEnumerable, Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream) at Microsoft.Reporting.NETCore.LocalReport.InternalRender(System.String, Boolean, System.String, Microsoft.Reporting.NETCore.PageCountMode, Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream, Microsoft.Reporting.NETCore.Warning[] ByRef) at Microsoft.Reporting.NETCore.LocalReport.InternalRender(System.String, Boolean, System.String, Microsoft.Reporting.NETCore.PageCountMode, System.String ByRef, System.String ByRef, System.String ByRef, System.String[] ByRef, Microsoft.Reporting.NETCore.Warning[] ByRef) at Siloam.PaymentSystem.Report.Repository.ReportRepository.CreateReportInvoice(System.String, System.String, Siloam.PaymentSystem.Report.Model.ReportInvoiceParameter, System.Collections.Generic.IEnumerable1) at Siloam.PaymentSystem.Report.Repository.ReportInvoiceRepository.CreateInvoiceReport(CNDS.Model.RequestHeader, Siloam.PaymentSystem.Report.Model.ReportInvoiceRequest, Boolean) at Siloam.PaymentSystem.Report.Controllers.ReportInvoiceController.CreateInvoiceReport(CNDS.Model.RequestHeader, Siloam.PaymentSystem.Report.Model.ReportInvoiceRequest) at DynamicClass.lambda_method2(System.Runtime.CompilerServices.Closure, System.Object, System.Object[]) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+SyncActionResultExecutor.Execute(Microsoft.AspNetCore.Mvc.Infrastructure.IActionResultTypeMapper, Microsoft.Extensions.Internal.ObjectMethodExecutor, System.Object, System.Object[]) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync() at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync() at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAwaitedAsync() at Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute+d__6.MoveNext() at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute+d_6, Microsoft.AspNetCore.Mvc.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]](d_6 ByRef) at Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute.OnActionExecutionAsync(Microsoft.AspNetCore.Mvc.Filters.ActionExecutingContext, Microsoft.AspNetCore.Mvc.Filters.ActionExecutionDelegate) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync() at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync() at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeAsync() at Microsoft.AspNetCore.Mvc.Routing.ControllerRequestDelegateFactory+<>c_DisplayClass12_0.b_0(Microsoft.AspNetCore.Http.HttpContext) at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext) at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext) at Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext) at Microsoft.AspNetCore.Hosting.HostingApplication.ProcessRequestAsync(Context) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+d_2261[[System._Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequests>d_2261[[System._Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], Microsoft.AspNetCore.Server.Kestrel.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].ExecutionContextCallback(System.Object) at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+d_2261[[System._Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], Microsoft.AspNetCore.Server.Kestrel.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext(System.Threading.Thread) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequests>d_2261[[System._Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], Microsoft.AspNetCore.Server.Kestrel.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].ExecuteFromThreadPool(System.Threading.Thread) at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart() at System.Threading.Thread.StartCallback()

And after that wine throw exception

0374:err:sync:RtlpWaitForCriticalSection section 006A0074 "dlls/ntdll/heap.c: main process heap section" wait timed out in thread 0374, blocked by 07e0, retrying (60 sec)

lkosson commented 8 months ago

Most likely a minor bug in wine. I doubt it can be easily debugged remotely, especially if it is so rare. As a workaround you might try to periodically (daily or weekly) restart your container if such downtime is acceptable in your application.