plotly / Kaleido

Fast static image export for web-based visualization libraries with zero dependencies
MIT License
378 stars 38 forks source link

Failure to render large figure #66

Open alnfedorov opened 3 years ago

alnfedorov commented 3 years ago

Hi!

It looks like the chromium engine fails to load my super large(~100 Mb) plotly figure (Error code: SIGTRAP in the chromium browser UI). Link to the data is here(gdrive zip archive with an example figure in the JSON format).

Steps to reproduce:

import json
import plotly.graph_objects as go
with open('failed.json', 'r') as serialized:
    fig = json.load(serialized)
fig = go.Figure(data=fig['data'], layout=fig['layout'])

# fig.write_html("failed.html", include_plotlyjs="cdn", auto_open=False)
fig.write_image("failed.png")

It just hangs at the last line, no log or anything.

The plot itself should be ok because HTML version works in Firefox (but everything is very slow, of course).

I work with kaleido 0.1.0 and plotly 4.14.1, figure has ~500 subplots each with 4-5 scatter plots(200-5k points) and 4 barplots(200-5k bars per subplot, not shown by default and should not be rendered).

jonmmease commented 3 years ago

Hi @alnfedorov, this is probably related to the maximum Chromium message size issue described in https://github.com/plotly/Kaleido/issues/19. Does that look consistent with what you're seeing?

alnfedorov commented 3 years ago

Well, I think it is a good guess. However, I don't see any log/exception like the one in #19. It just hangs forever with no CPU consumption(first high usage, then kaleido workers stop to do anything).

jonmmease commented 3 years ago

You might be able to get some logging info with the instructions in https://github.com/plotly/Kaleido/issues/36#issuecomment-756676527.

alnfedorov commented 3 years ago

Here is the log for my use-case:

[0116/133339.347458:FATAL:page_allocator_internals_posix.h(189)] Check failed: 0 == mprotect(address, length, GetAccessFlags(accessibility)) (0 vs. -1)
#0 0x55bc29565f89 base::debug::CollectStackTrace()
#1 0x55bc294d48e3 base::debug::StackTrace::StackTrace()
#2 0x55bc294e5005 logging::LogMessage::~LogMessage()
#3 0x55bc2957cbe6 base::SetSystemPagesAccess()
#4 0x55bc2957f4cb base::internal::PartitionBucket::SlowPathAlloc()
#5 0x55bc2a45ed8d WTF::Partitions::FastMalloc()
#6 0x55bc2b7c0521 blink::ComputedStyle::Clone()
#7 0x55bc2ad1d047 blink::CachedMatchedProperties::Set()
#8 0x55bc2ad1d6c5 blink::MatchedPropertiesCache::Add()
#9 0x55bc2ac7b92d blink::StyleResolver::ApplyBaseComputedStyle()
#10 0x55bc2ac7b27f blink::StyleResolver::StyleForElement()
#11 0x55bc2b800958 blink::SVGElement::CustomStyleForLayoutObject()
#12 0x55bc2ab7d57a blink::Element::StyleForLayoutObject()
#13 0x55bc2ab7ddc5 blink::Element::RecalcOwnStyle()
#14 0x55bc2ab7d7aa blink::Element::RecalcStyle()
#15 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#16 0x55bc2ab7da53 blink::Element::RecalcStyle()
#17 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#18 0x55bc2ab7da53 blink::Element::RecalcStyle()
#19 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#20 0x55bc2ab7da53 blink::Element::RecalcStyle()
#21 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#22 0x55bc2ab7da53 blink::Element::RecalcStyle()
#23 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#24 0x55bc2ab7da53 blink::Element::RecalcStyle()
#25 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#26 0x55bc2ab7da53 blink::Element::RecalcStyle()
#27 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#28 0x55bc2ab7da53 blink::Element::RecalcStyle()
#29 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#30 0x55bc2ab7da53 blink::Element::RecalcStyle()
#31 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#32 0x55bc2ab7da53 blink::Element::RecalcStyle()
#33 0x55bc2ab95492 blink::StyleEngine::RecalcStyle()
#34 0x55bc2ab958b4 blink::StyleEngine::UpdateStyleAndLayoutTree()
#35 0x55bc2aa43c51 blink::Document::UpdateStyle()
#36 0x55bc2aa3f768 blink::Document::UpdateStyleAndLayoutTree()
#37 0x55bc2aa4455f blink::Document::UpdateStyleAndLayout()
#38 0x55bc2aa44e68 blink::Document::EnsurePaintLocationDataValidForNode()
#39 0x55bc2ab76968 blink::Element::ClientQuads()
#40 0x55bc2ab76b84 blink::Element::getBoundingClientRect()
#41 0x55bc2ac55729 blink::V8Element::GetBoundingClientRectMethodCallback()
#42 0x55bc286baca9 v8::internal::FunctionCallbackArguments::Call()
#43 0x55bc286ba1d4 v8::internal::(anonymous namespace)::HandleApiCallHelper<>()
#44 0x55bc286b987d v8::internal::Builtin_Impl_HandleApiCall()
#45 0x55bc28f96df8 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit
Task trace:
#0 0x55bc29b5f54d IPC::(anonymous namespace)::ChannelAssociatedGroupController::Accept()
IPC message handler context: 0xC5F65154
Received signal 6
#0 0x55bc29565f89 base::debug::CollectStackTrace()
#1 0x55bc294d48e3 base::debug::StackTrace::StackTrace()
#2 0x55bc29565b25 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#3 0x7f6e2922c540 (/usr/lib/x86_64-linux-gnu/libpthread-2.30.so+0x1553f)
#4 0x7f6e2851a3eb gsignal
#5 0x7f6e284f9899 abort
#6 0x55bc29564a85 base::debug::BreakDebugger()
#7 0x55bc294e54a2 logging::LogMessage::~LogMessage()
#8 0x55bc2957cbe6 base::SetSystemPagesAccess()
#9 0x55bc2957f4cb base::internal::PartitionBucket::SlowPathAlloc()
#10 0x55bc2a45ed8d WTF::Partitions::FastMalloc()
#11 0x55bc2b7c0521 blink::ComputedStyle::Clone()
#12 0x55bc2ad1d047 blink::CachedMatchedProperties::Set()
#13 0x55bc2ad1d6c5 blink::MatchedPropertiesCache::Add()
#14 0x55bc2ac7b92d blink::StyleResolver::ApplyBaseComputedStyle()
#15 0x55bc2ac7b27f blink::StyleResolver::StyleForElement()
#16 0x55bc2b800958 blink::SVGElement::CustomStyleForLayoutObject()
#17 0x55bc2ab7d57a blink::Element::StyleForLayoutObject()
#18 0x55bc2ab7ddc5 blink::Element::RecalcOwnStyle()
#19 0x55bc2ab7d7aa blink::Element::RecalcStyle()
#20 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#21 0x55bc2ab7da53 blink::Element::RecalcStyle()
#22 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#23 0x55bc2ab7da53 blink::Element::RecalcStyle()
#24 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#25 0x55bc2ab7da53 blink::Element::RecalcStyle()
#26 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#27 0x55bc2ab7da53 blink::Element::RecalcStyle()
#28 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#29 0x55bc2ab7da53 blink::Element::RecalcStyle()
#30 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#31 0x55bc2ab7da53 blink::Element::RecalcStyle()
#32 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#33 0x55bc2ab7da53 blink::Element::RecalcStyle()
#34 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#35 0x55bc2ab7da53 blink::Element::RecalcStyle()
#36 0x55bc2aba34f6 blink::ContainerNode::RecalcDescendantStyles()
#37 0x55bc2ab7da53 blink::Element::RecalcStyle()
#38 0x55bc2ab95492 blink::StyleEngine::RecalcStyle()
#39 0x55bc2ab958b4 blink::StyleEngine::UpdateStyleAndLayoutTree()
#40 0x55bc2aa43c51 blink::Document::UpdateStyle()
#41 0x55bc2aa3f768 blink::Document::UpdateStyleAndLayoutTree()
#42 0x55bc2aa4455f blink::Document::UpdateStyleAndLayout()
#43 0x55bc2aa44e68 blink::Document::EnsurePaintLocationDataValidForNode()
#44 0x55bc2ab76968 blink::Element::ClientQuads()
#45 0x55bc2ab76b84 blink::Element::getBoundingClientRect()
#46 0x55bc2ac55729 blink::V8Element::GetBoundingClientRectMethodCallback()
#47 0x55bc286baca9 v8::internal::FunctionCallbackArguments::Call()
#48 0x55bc286ba1d4 v8::internal::(anonymous namespace)::HandleApiCallHelper<>()
#49 0x55bc286b987d v8::internal::Builtin_Impl_HandleApiCall()
#50 0x55bc28f96df8 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit
  r8: 0000000000000000  r9: 00007ffdd65ca3e0 r10: 0000000000000008 r11: 0000000000000246
 r12: 00007ffdd65cb6a8 r13: 00007ffdd65ca680 r14: 00007ffdd65cb6b0 r15: aaaaaaaaaaaaaaaa
  di: 0000000000000002  si: 00007ffdd65ca3e0  bp: 00007ffdd65ca630  bx: 00007f6e280c7c40
  dx: 0000000000000000  ax: 0000000000000000  cx: 00007f6e2851a3eb  sp: 00007ffdd65ca3e0
  ip: 00007f6e2851a3eb efl: 0000000000000246 cgf: 002b000000000033 erf: 0000000000000004
 trp: 000000000000000e msk: 0000000000000000 cr2: 00007fdf42505008
[end of stack trace]
Calling _exit(1). Core file will not be generated.

It looks like the error in my case is different from the #19.