asciidoctor / asciidoctorj

:coffee: Java bindings for Asciidoctor. Asciidoctor on the JVM!
http://asciidoctor.org
Apache License 2.0
627 stars 172 forks source link

Performance issue generating PDF #476

Open mattadamson opened 8 years ago

mattadamson commented 8 years ago

Team,

Generation of the PDF appears to hang i.e. even after one hour it's still processing. I took a few stack trace by suspending the debugger at intervals apart. Can you see anything obvious as to what it's doing and why it could take so long?

See https://gist.github.com/mojavelinux/ea84f5b0f3a315f495b1226fede9f892

robertpanzer commented 8 years ago

Hi Matt,

could you please attach information about the concrete environment you are working with, i.e. which version of OS, java version, asciidoctorj, asciidoctorj-pdf and possibly the version of jruby if you have adapted it? And additionally could you please create the thread dump via jstack? Like that it’s impossible to tell if the thread is for example blocked by waiting for a monitor or if it is running.

Cheers Robert

Am 02.07.2016 um 17:46 schrieb mattadamson notifications@github.com:

Team,

Generation of the PDF appears to hang i.e. even after one hour it's still processing. I took a few stack trace by suspending the debugger at intervals apart. Can you see anything obvious as to what it's doing and why it could take so long?

Thanks

First stack

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

TTFunk::SubsetCollection$$use_694042387ea8d4955a7603cad3f31cc6d8dcf4ed1591683105.block_0$RUBY$file(TTFunk::SubsetCollection$$use_694042387ea8d4955a7603cad3f31cc6d8dcf4ed1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 18 rubyjit$TTFunk::SubsetCollection$$use_694042387ea8d4955a7603cad3f31cc6d8dcf4ed1591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlock19.yield(ThreadContext, IRubyObject, Binding, Block$Type) line: 135

Block.yield(ThreadContext, IRubyObject) line: 142

RubyArray.eachCommon(ThreadContext, Block) line: 1606

RubyArray.each(ThreadContext, Block) line: 1613 RubyArray$INVOKER$i$0$0$each.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: not available

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

TTFunk::SubsetCollection$$use_694042387ea8d4955a7603cad3f31cc6d8dcf4ed1591683105.file(TTFunk::SubsetCollection$$use_694042387ea8d4955a7603cad3f31cc6d8dcf4ed1591683105, ThreadContext, IRubyObject, IRubyObject, Block) line: 16

TTFunk::SubsetCollection$$use_694042387ea8d4955a7603cad3f31cc6d8dcf4ed1591683105.file(ThreadContext, IRubyObject, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 181

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 168 TTFunk::SubsetCollection$$encode_ba032d82df49e15e8dc5d3d4319a280c622fee3f1591683105.file(TTFunk::SubsetCollection$$encode_ba032d82df49e15e8dc5d3d4319a280c622fee3f1591683105, ThreadContext, IRubyObject, IRubyObject, Block) line: 46

TTFunk::SubsetCollection$$encode_ba032d82df49e15e8dc5d3d4319a280c622fee3f1591683105.file(ThreadContext, IRubyObject, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 181

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 168 Prawn::Font::TTF$$encode_text_b83e653c897eaba6d57f034191c7253a0c1abd371591683105.block_0$RUBY$file(Prawn::Font::TTF$$encode_text_b83e653c897eaba6d57f034191c7253a0c1abd371591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 88 rubyjit$Prawn::Font::TTF$$encode_text_b83e653c897eaba6d57f034191c7253a0c1abd371591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlockLight19(CompiledBlock19).yield(ThreadContext, IRubyObject, IRubyObject, RubyModule, boolean, Binding, Block$Type, Block) line: 159 CompiledBlockLight19(CompiledBlock19).yield(ThreadContext, IRubyObject, IRubyObject, RubyModule, boolean, Binding, Block$Type) line: 145

Block.yieldArray(ThreadContext, IRubyObject, IRubyObject, RubyModule) line: 158 RubyEnumerable$25.call(ThreadContext, IRubyObject[], Block) line: 835

CallBlock.yield(ThreadContext, IRubyObject, Binding, Block$Type) line: 90

Block.yield(ThreadContext, IRubyObject) line: 142

RubyArray.eachCommon(ThreadContext, Block) line: 1606

RubyArray.each(ThreadContext, Block) line: 1613 RubyArray$INVOKER$i$0$0$each.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: not available

RubyClass.finvoke(ThreadContext, IRubyObject, String, Block) line: 528

Helpers.invoke(ThreadContext, IRubyObject, String, Block) line: 486 RubyEnumerable.callEach(Ruby, ThreadContext, IRubyObject, Arity, BlockCallback) line: 98

RubyEnumerable.injectCommon(ThreadContext, IRubyObject, IRubyObject, Block) line: 831

RubyEnumerable.inject(ThreadContext, IRubyObject, IRubyObject, Block) line: 852 RubyEnumerable$INVOKER$s$inject.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: not available

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 188

Prawn::Font::TTF$$encode_text_b83e653c897eaba6d57f034191c7253a0c1abd371591683105.file(Prawn::Font::TTF$$encode_text_b83e653c897eaba6d57f034191c7253a0c1abd371591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 82

Prawn::Font::TTF$$encode_text_b83e653c897eaba6d57f034191c7253a0c1abd371591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available Prawn::Font::TTF$$encode_text_b83e653c897eaba6d57f034191c7253a0c1abd371591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 46 JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject) line: 221

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject) line: 202

PDF::Core::Text$$add_text_content_29486ac28db8b85033341b0de8d7017b1cf170581591683105.file(PDF::Core::Text$$add_text_content_29486ac28db8b85033341b0de8d7017b1cf170581591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 233 PDF::Core::Text$$add_text_content_29486ac28db8b85033341b0de8d7017b1cf170581591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject[]) line: 121

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject...) line: 70

Prawn::Text$$draw_text!a9b8f9cce9c7186a4d1c7febfe9113bde76e4de51591683105._file(Prawn::Text$$draw_text!a9b8f9cce9c7186a4d1c7febfe9113bde76e4de51591683105, ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 296

Prawn::Text$$draw_text!a9b8f9cce9c7186a4d1c7febfe9113bde76e4de51591683105.__file(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject) line: 221

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject) line: 202

Prawn::Text::Formatted::Box$$draw_fragment_6689a1f3156c8047a611c6e09084c2386147b6561591683105.block_0$RUBY$file(Prawn::Text::Formatted::Box$$draw_fragment_6689a1f3156c8047a611c6e09084c2386147b6561591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 283

rubyjit$Prawn::Text::Formatted::Box$$draw_fragment_6689a1f3156c8047a611c6e09084c2386147b6561591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlockLight19(CompiledBlock19).yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlockLight19(CompiledBlock19).yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

PDF::Core::Text$$word_spacing_c655da47d56f453a50642b9174ad0378de70cb5a1591683105.file(PDF::Core::Text$$word_spacing_c655da47d56f453a50642b9174ad0378de70cb5a1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 222 PDF::Core::Text$$word_spacing_c655da47d56f453a50642b9174ad0378de70cb5a1591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available PDF::Core::Text$$word_spacing_c655da47d56f453a50642b9174ad0378de70cb5a1591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 188

Prawn::Text::Formatted::Box$$draw_fragment_6689a1f3156c8047a611c6e09084c2386147b6561591683105.file(Prawn::Text::Formatted::Box$$draw_fragment_6689a1f3156c8047a611c6e09084c2386147b6561591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 278

Prawn::Text::Formatted::Box$$draw_fragment_6689a1f3156c8047a611c6e09084c2386147b6561591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject[]) line: 121

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, IRubyObject[], ThreadContext, IRubyObject) line: 296

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject...) line: 72

Prawn::Text::Formatted::Wrap$$format_and_draw_fragment_1b6e20c2ed098cf7986103caad1094eaea2fd5c81591683105.block_0$RUBY$file(Prawn::Text::Formatted::Wrap$$format_and_draw_fragment_1b6e20c2ed098cf7986103caad1094eaea2fd5c81591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 152

rubyjit$Prawn::Text::Formatted::Wrap$$format_and_draw_fragment_1b6e20c2ed098cf7986103caad1094eaea2fd5c81591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlockLight19(CompiledBlock19).yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlockLight19(CompiledBlock19).yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

Prawn::Text::Formatted::Arranger$$apply_font_size_8421d68e812888b809fc34207e9addbb1e94a7da1591683105.file(Prawn::Text::Formatted::Arranger$$apply_font_size_8421d68e812888b809fc34207e9addbb1e94a7da1591683105, ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 236

Prawn::Text::Formatted::Arranger$$apply_font_size_8421d68e812888b809fc34207e9addbb1e94a7da1591683105.file(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject, Block) line: 241

FunctionalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject, Block) line: 211

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject, Block) line: 217 Prawn::Text::Formatted::Arranger$$apply_font_settings_39d334a24564bcc763e8c0a2125b7dd6bd85bd891591683105.block_0$RUBY$file(Prawn::Text::Formatted::Arranger$$apply_font_settings_39d334a24564bcc763e8c0a2125b7dd6bd85bd891591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 161

rubyjit$Prawn::Text::Formatted::Arranger$$apply_font_settings_39d334a24564bcc763e8c0a2125b7dd6bd85bd891591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlock19.yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlock19.yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

PDF::Core::Text$$character_spacing_3e160e2307b3ee7bcbf178ce6964c1014e30934c1591683105.file(PDF::Core::Text$$character_spacing_3e160e2307b3ee7bcbf178ce6964c1014e30934c1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 204

PDF::Core::Text$$character_spacing_3e160e2307b3ee7bcbf178ce6964c1014e30934c1591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

PDF::Core::Text$$character_spacing_3e160e2307b3ee7bcbf178ce6964c1014e30934c1591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42 JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 188

Prawn::Text::Formatted::Arranger$$apply_font_settings_39d334a24564bcc763e8c0a2125b7dd6bd85bd891591683105.file(Prawn::Text::Formatted::Arranger$$apply_font_settings_39d334a24564bcc763e8c0a2125b7dd6bd85bd891591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 154 Prawn::Text::Formatted::Arranger$$apply_font_settings_39d334a24564bcc763e8c0a2125b7dd6bd85bd891591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available Prawn::Text::Formatted::Arranger$$apply_font_settings_39d334a24564bcc763e8c0a2125b7dd6bd85bd891591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 FunctionalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 183

Prawn::Text::Formatted::Arranger$$apply_color_and_font_settings_b323e4331235cb89f9d464e84c56f4c3fe45cbfd1591683105.file(Prawn::Text::Formatted::Arranger$$apply_color_and_font_settings_b323e4331235cb89f9d464e84c56f4c3fe45cbfd1591683105, ThreadContext, IRubyObject, IRubyObject, Block) line: 134

Prawn::Text::Formatted::Arranger$$apply_color_and_font_settings_b323e4331235cb89f9d464e84c56f4c3fe45cbfd1591683105.file(ThreadContext, IRubyObject, IRubyObject, Block) line: not available JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 188

Prawn::Text::Formatted::Wrap$$format_and_draw_fragment_1b6e20c2ed098cf7986103caad1094eaea2fd5c81591683105.file(Prawn::Text::Formatted::Wrap$$format_and_draw_fragment_1b6e20c2ed098cf7986103caad1094eaea2fd5c81591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 151

Prawn::Text::Formatted::Wrap$$format_and_draw_fragment_1b6e20c2ed098cf7986103caad1094eaea2fd5c81591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject[]) line: 121

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, IRubyObject[], ThreadContext, IRubyObject) line: 296

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject...) line: 72

Prawn::Text::Formatted::Wrap$$print_line_bc0339f0528c53624b084ad7223ed5aea784fde01591683105.block_0$RUBY$file(Prawn::Text::Formatted::Wrap$$print_line_bc0339f0528c53624b084ad7223ed5aea784fde01591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 97

rubyjit$Prawn::Text::Formatted::Wrap$$print_line_bc0339f0528c53624b084ad7223ed5aea784fde01591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlockLight19(CompiledBlock19).yield(ThreadContext, IRubyObject, Binding, Block$Type) line: 135

Block.yield(ThreadContext, IRubyObject) line: 142

RubyArray.eachCommon(ThreadContext, Block) line: 1606

RubyArray.each(ThreadContext, Block) line: 1613 RubyArray$INVOKER$i$0$0$each.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: not available

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

Prawn::Text::Formatted::Wrap$$print_line_bc0339f0528c53624b084ad7223ed5aea784fde01591683105.file(Prawn::Text::Formatted::Wrap$$print_line_bc0339f0528c53624b084ad7223ed5aea784fde01591683105, ThreadContext, IRubyObject, Block) line: 95

Prawn::Text::Formatted::Wrap$$print_line_bc0339f0528c53624b084ad7223ed5aea784fde01591683105.file(ThreadContext, IRubyObject, Block) line: not available JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 141 VariableCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306 VariableCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

Prawn::Text::Formatted::Wrap$$wrap_6c94f46455d5e9d44c163963a4cc3923c6fe9e191591683105.file(Prawn::Text::Formatted::Wrap$$wrap_6c94f46455d5e9d44c163963a4cc3923c6fe9e191591683105, ThreadContext, IRubyObject, IRubyObject, Block) line: 63

Prawn::Text::Formatted::Wrap$$wrap_6c94f46455d5e9d44c163963a4cc3923c6fe9e191591683105.file(ThreadContext, IRubyObject, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 181

AliasMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 61

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject) line: 326

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 170 Asciidoctor::Pdf::FormattedText::InlineImageArranger$$wrap_87a7902aa1b86d32a22eb2a0de6ee0615218f2041591683105.file(Asciidoctor::Pdf::FormattedText::InlineImageArranger$$wrap_87a7902aa1b86d32a22eb2a0de6ee0615218f2041591683105, ThreadContext, IRubyObject, IRubyObject, Block) line: 26

Asciidoctor::Pdf::FormattedText::InlineImageArranger$$wrap_87a7902aa1b86d32a22eb2a0de6ee0615218f2041591683105.file(ThreadContext, IRubyObject, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 181

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject) line: 326

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 170 Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105.block_3$RUBY$file(Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 224

rubyjit$Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105$block_3$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available CompiledBlockLight19(CompiledBlock19).yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlockLight19(CompiledBlock19).yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

Prawn::Document$$font_size_1525c61d19ccffd2b5db7358bcde1d368e8d09d01591683105.file(Prawn::Document$$font_size_1525c61d19ccffd2b5db7358bcde1d368e8d09d01591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 102

Prawn::Document$$font_size_1525c61d19ccffd2b5db7358bcde1d368e8d09d01591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

Prawn::Document$$font_size_1525c61d19ccffd2b5db7358bcde1d368e8d09d01591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42 JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 SuperCallSite.callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 190

SuperCallSite.call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 197

Asciidoctor::Prawn::Extensions$$font_size_d45c6394f4b8ebd0a80eda701caf440b0aaffb891591683105.file(Asciidoctor::Prawn::Extensions$$font_size_d45c6394f4b8ebd0a80eda701caf440b0aaffb891591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 242 Asciidoctor::Prawn::Extensions$$font_size_d45c6394f4b8ebd0a80eda701caf440b0aaffb891591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available Asciidoctor::Prawn::Extensions$$font_size_d45c6394f4b8ebd0a80eda701caf440b0aaffb891591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 188

Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105.block_2$RUBY$file(Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 217

rubyjit$Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105$block_2$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available CompiledBlock19.yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlock19.yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

PDF::Core::Text$$text_rendering_mode_660c1f8124e84351ec6cd69687b090f581e109a51591683105.file(PDF::Core::Text$$text_rendering_mode_660c1f8124e84351ec6cd69687b090f581e109a51591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 182

PDF::Core::Text$$text_rendering_mode_660c1f8124e84351ec6cd69687b090f581e109a51591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

PDF::Core::Text$$text_rendering_mode_660c1f8124e84351ec6cd69687b090f581e109a51591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 188

Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105.block_1$RUBY$file(Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 212

rubyjit$Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105$block_1$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available CompiledBlock19.yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlock19.yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

PDF::Core::Text$$character_spacing_3e160e2307b3ee7bcbf178ce6964c1014e30934c1591683105.file(PDF::Core::Text$$character_spacing_3e160e2307b3ee7bcbf178ce6964c1014e30934c1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 204

PDF::Core::Text$$character_spacing_3e160e2307b3ee7bcbf178ce6964c1014e30934c1591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

PDF::Core::Text$$character_spacing_3e160e2307b3ee7bcbf178ce6964c1014e30934c1591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42 JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 188

Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105.block_0$RUBY$file(Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 211

rubyjit$Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available CompiledBlock19.yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlock19.yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105.chained_0_ensure_1$RUBY$ensure(Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105, ThreadContext, IRubyObject, Block) line: 208

Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105.file(Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105, ThreadContext, IRubyObject, Block) line: not available

Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105.file(ThreadContext, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 161

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105.file(Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 210 Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

Prawn::Text::Formatted::Box$$render_9304fe96326e3cf59aee73cb2ee826a53729257f1591683105(AbstractScript).file(ThreadContext, IRubyObject, Block) line: 38 JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 141 NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105.block_1$RUBY$file(Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 71

rubyjit$Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105$block_1$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlockLight19(CompiledBlock19).yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlockLight19(CompiledBlock19).yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

Prawn::Table::Cell::Text$$with_text_color_85730a850322e3118ac870544653a5ff5da89a571591683105.chained_0_ensure_1$RUBY$ensure(Prawn::Table::Cell::Text$$with_text_color_85730a850322e3118ac870544653a5ff5da89a571591683105, ThreadContext, IRubyObject, Block) line: 108

Prawn::Table::Cell::Text$$with_text_color_85730a850322e3118ac870544653a5ff5da89a571591683105.file(Prawn::Table::Cell::Text$$with_text_color_85730a850322e3118ac870544653a5ff5da89a571591683105, ThreadContext, IRubyObject, Block) line: 105

Prawn::Table::Cell::Text$$with_text_color_85730a850322e3118ac870544653a5ff5da89a571591683105.file(ThreadContext, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 161

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, Block, ThreadContext, IRubyObject) line: 316

FunctionalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 145

FunctionalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105.block_0$RUBY$file(Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 70

rubyjit$Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlock19.yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlock19.yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

Prawn::Table::Cell::Text$$with_font_69a387f3cd1d4567ec2be07fcd00a042d719dcd31591683105.block_0$RUBY$file(Prawn::Table::Cell::Text$$with_font_69a387f3cd1d4567ec2be07fcd00a042d719dcd31591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 99 rubyjit$Prawn::Table::Cell::Text$$with_font_69a387f3cd1d4567ec2be07fcd00a042d719dcd31591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available CompiledBlockLight19(CompiledBlock19).yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlockLight19(CompiledBlock19).yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105.chained_0_ensure_1$RUBY$ensure(Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105, ThreadContext, IRubyObject, Block) line: 208

Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105.file(Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105, ThreadContext, IRubyObject, Block) line: not available

Prawn::Document$$save_font_326bd4ddac5212c8a3fa26b71dd2681b13c669e91591683105.file(ThreadContext, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 161

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

Prawn::Table::Cell::Text$$with_font_69a387f3cd1d4567ec2be07fcd00a042d719dcd31591683105.file(Prawn::Table::Cell::Text$$with_font_69a387f3cd1d4567ec2be07fcd00a042d719dcd31591683105, ThreadContext, IRubyObject, Block) line: 92 Prawn::Table::Cell::Text$$with_font_69a387f3cd1d4567ec2be07fcd00a042d719dcd31591683105.file(ThreadContext, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 161

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, Block, ThreadContext, IRubyObject) line: 316

FunctionalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 145

FunctionalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105.file(Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105, ThreadContext, IRubyObject, Block) line: 68

Prawn::Table::Cell::Text$$draw_content_1ecbfe06c38e0abe9701b64e818ee29e1cb24e6a1591683105.file(ThreadContext, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 141 VariableCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306 VariableCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105.block_1$RUBY$file(Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 430

rubyjit$Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105$block_1$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlockLight19(CompiledBlock19).yield(ThreadContext, IRubyObject, IRubyObject, RubyModule, boolean, Binding, Block$Type, Block) line: 159 CompiledBlockLight19(CompiledBlock19).call(ThreadContext, IRubyObject[], Binding, Block$Type, Block) line: 87

Block.call(ThreadContext, IRubyObject[], Block) line: 101

RubyProc.call(ThreadContext, IRubyObject[], IRubyObject, Block) line: 300

RubyProc.call19(ThreadContext, IRubyObject[], Block) line: 281

RubyProc$INVOKER$i$0$0$call19.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject[], Block) line: not available

RubyProc$INVOKER$i$0$0$call19(DynamicMethod).call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 202

RubyProc$INVOKER$i$0$0$call19(DynamicMethod).call(ThreadContext, IRubyObject, RubyModule, String) line: 198 NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 134

Prawn::Document$$init_bounding_box_6e5e6a057d3ce6afd6f0bd98affe0f75165422b81591683105.file(Prawn::Document$$init_bounding_box_6e5e6a057d3ce6afd6f0bd98affe0f75165422b81591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 197

Prawn::Document$$init_bounding_box_6e5e6a057d3ce6afd6f0bd98affe0f75165422b81591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

Prawn::Document$$init_bounding_box_6e5e6a057d3ce6afd6f0bd98affe0f75165422b81591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42 JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 201 FunctionalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 177 FunctionalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 188

Prawn::Document$$bounding_box_9d79ac4449121bb5387858bf53a7636263d4a56d1591683105.file(Prawn::Document$$bounding_box_9d79ac4449121bb5387858bf53a7636263d4a56d1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 159 Prawn::Document$$bounding_box_9d79ac4449121bb5387858bf53a7636263d4a56d1591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available Prawn::Document$$bounding_box_9d79ac4449121bb5387858bf53a7636263d4a56d1591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 46 JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject, Block) line: 241

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject, Block) line: 211

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject, Block) line: 222 Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105.block_0$RUBY$file(Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 427

rubyjit$Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105$block_0$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlock19.yieldSpecificInternal(ThreadContext, IRubyObject[], Binding, Block$Type) line: 117

CompiledBlock19.yieldSpecific(ThreadContext, Binding, Block$Type) line: 92

Block.yieldSpecific(ThreadContext) line: 111

Prawn::Document$$float_4995e6e46970c896c33fad28291e8a53a1ca9b071591683105.file(Prawn::Document$$float_4995e6e46970c896c33fad28291e8a53a1ca9b071591683105, ThreadContext, IRubyObject, Block) line: 342

Prawn::Document$$float_4995e6e46970c896c33fad28291e8a53a1ca9b071591683105.file(ThreadContext, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 161

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105.file(Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105, ThreadContext, IRubyObject, IRubyObject, Block) line: 426 Prawn::Table::Cell$$draw_bounded_content_790304ab135759988596187bb05e3df5083fbdc91591683105.file(ThreadContext, IRubyObject, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 181

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject) line: 326

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 170 Prawn::Table::Cell$$draw_cells_b449c2c4004492f5ee4243af71655373a84340c21591683105.block_1$RUBY$file(Prawn::Table::Cell$$draw_cells_b449c2c4004492f5ee4243af71655373a84340c21591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 419

rubyjit$Prawn::Table::Cell$$draw_cells_b449c2c4004492f5ee4243af71655373a84340c21591683105$block_1$RUBY$file.call(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

CompiledBlockLight19(CompiledBlock19).yield(ThreadContext, IRubyObject, Binding, Block$Type) line: 135

Block.yield(ThreadContext, IRubyObject) line: 142

RubyArray.eachCommon(ThreadContext, Block) line: 1606

RubyArray.each(ThreadContext, Block) line: 1613 RubyArray$INVOKER$i$0$0$each.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: not available

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

Prawn::Table::Cell$$draw_cells_b449c2c4004492f5ee4243af71655373a84340c21591683105.file(Prawn::Table::Cell$$draw_cells_b449c2c4004492f5ee4243af71655373a84340c21591683105, ThreadContext, IRubyObject, IRubyObject, Block) line: 417 Prawn::Table::Cell$$draw_cells_b449c2c4004492f5ee4243af71655373a84340c21591683105.file(ThreadContext, IRubyObject, IRubyObject, Block) line: not available

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 181

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 168 Prawn::Table$$ink_and_draw_cells_4b704ffb5de28c967aa975d807ee9819660cf1e31591683105.file(Prawn::Table$$ink_and_draw_cells_4b704ffb5de28c967aa975d807ee9819660cf1e31591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 425

Prawn::Table$$ink_and_draw_cells_4b704ffb5de28c967aa975d807ee9819660cf1e31591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

Prawn::Table$$ink_and_draw_cells_4b704ffb5de28c967aa975d807ee9819660cf1e31591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 181

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject) line: 326

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 170 FCallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 36 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_BLOCK(Ruby, ThreadContext, String, int, Node, String, IRubyObject, Block) line: 112

Interpreted19Block.evalBlockBody(ThreadContext, Binding, IRubyObject) line: 206 Interpreted19Block.yield(ThreadContext, IRubyObject, Binding, Block$Type) line: 157 Interpreted19Block.yieldSpecific(ThreadContext, Binding, Block$Type) line: 130

Block.yieldSpecific(ThreadContext) line: 111

ZYieldNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 25

ReturnNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 92

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

WhenOneArgNode.when(IRubyObject, ThreadContext, Ruby, IRubyObject, Block) line: 49

CaseNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 133

LocalAsgnNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 123

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 161 DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 195 FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, Block, ThreadContext, IRubyObject) line: 316

FunctionalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 145

FunctionalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

FCallNoArgBlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 32 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 139

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 187

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

CallNoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 60

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject, Block) line: 247

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject, Block) line: 227

FunctionalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject, Block) line: 211

FunctionalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject, Block) line: 222 FCallTwoArgBlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 34

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 204

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 211

MetaClass(RubyClass).finvoke(ThreadContext, IRubyObject, String, IRubyObject, Block) line: 568

RubyObject(RubyBasicObject).send19(ThreadContext, IRubyObject, IRubyObject, Block) line: 1568

RubyKernel.send19(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 2211

RubyKernel$INVOKER$s$send19.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject, Block) line: not available

RubyKernel$INVOKER$s$send19(JavaMethod$JavaMethodOneOrTwoOrNBlock).call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject) line: 367 FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject) line: 202

Asciidoctor::Pdf::Converter$$convert_c1ff790e65a146e7421e39dd0c5995f3c82c9e3e1591683105.file(Asciidoctor::Pdf::Converter$$convert_c1ff790e65a146e7421e39dd0c5995f3c82c9e3e1591683105, ThreadContext, IRubyObject, IRubyObject[], Block) line: 96

Asciidoctor::Pdf::Converter$$convert_c1ff790e65a146e7421e39dd0c5995f3c82c9e3e1591683105.file(ThreadContext, IRubyObject, IRubyObject[], Block) line: not available

Asciidoctor::Pdf::Converter$$convert_c1ff790e65a146e7421e39dd0c5995f3c82c9e3e1591683105(AbstractScript).file(ThreadContext, IRubyObject, IRubyObject, Block) line: 42

JittedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 181

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 168 CallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 57

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 139

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 187

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

CallNoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 60

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_BLOCK(Ruby, ThreadContext, String, int, Node, String, IRubyObject, Block) line: 112

Interpreted19Block.evalBlockBody(ThreadContext, Binding, IRubyObject) line: 206 Interpreted19Block.yield(ThreadContext, IRubyObject, Binding, Block$Type) line: 157 Block.yield(ThreadContext, IRubyObject) line: 142

RubyArray.collect(ThreadContext, Block) line: 2400

RubyArray.map19(ThreadContext, Block) line: 2414

RubyArray$INVOKER$i$0$0$map19.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: not available

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

CallNoArgBlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 64

CallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 57

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 161 DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: 195 SuperCallSite.cacheAndCall(IRubyObject, RubyClass, Block, ThreadContext, IRubyObject, String) line: 346 SuperCallSite.callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 146

SuperCallSite.call(ThreadContext, IRubyObject, IRubyObject, Block) line: 151

SuperCallSite.callVarargs(ThreadContext, IRubyObject, IRubyObject, IRubyObject[], Block) line: 107

ZSuperNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 103 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

WhenOneArgNode.when(IRubyObject, ThreadContext, Ruby, IRubyObject, Block) line: 49

CaseNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 133

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 139

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 187

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

CallNoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 60

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

IfNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 116 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 182

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 203

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject) line: 326

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 170 FCallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 36 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

CaseNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 138

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 204

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 211

MetaClass(RubyClass).finvoke(ThreadContext, IRubyObject, String, IRubyObject, Block) line: 568

RubyObject(RubyBasicObject).send19(ThreadContext, IRubyObject, IRubyObject, Block) line: 1568

RubyKernel.send19(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 2211

RubyKernel$INVOKER$s$send19.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject, Block) line: not available

RubyKernel$INVOKER$s$send19(JavaMethod$JavaMethodOneOrTwoOrNBlock).call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject) line: 367 FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 346 FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject) line: 204

FCallTwoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 38 LocalAsgnNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 123

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

IfNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 116 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 182

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 203

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject) line: 326

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 170 CallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 57

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 139

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 187

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

CallNoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 60

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_BLOCK(Ruby, ThreadContext, String, int, Node, String, IRubyObject, Block) line: 112

Interpreted19Block.evalBlockBody(ThreadContext, Binding, IRubyObject) line: 206 Interpreted19Block.yield(ThreadContext, IRubyObject, Binding, Block$Type) line: 157 Block.yield(ThreadContext, IRubyObject) line: 142

RubyArray.collect(ThreadContext, Block) line: 2400

RubyArray.map19(ThreadContext, Block) line: 2414

RubyArray$INVOKER$i$0$0$map19.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: not available

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

CallNoArgBlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 64

CallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 57

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 139

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 187

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 134

CallNoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 60

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

IfNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 116 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 182

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 203

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 168 FCallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 36 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 204

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 211

MetaClass(RubyClass).finvoke(ThreadContext, IRubyObject, String, IRubyObject, Block) line: 568

RubyObject(RubyBasicObject).send19(ThreadContext, IRubyObject, IRubyObject, Block) line: 1568

RubyKernel.send19(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 2211

RubyKernel$INVOKER$s$send19.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject, Block) line: not available

RubyKernel$INVOKER$s$send19(JavaMethod$JavaMethodOneOrTwoOrNBlock).call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject) line: 367 FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject) line: 202

FCallTwoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 38 LocalAsgnNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 123

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

IfNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 116 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 182

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 203

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 168 CallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 57

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 139

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 187

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

CallNoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 60

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_BLOCK(Ruby, ThreadContext, String, int, Node, String, IRubyObject, Block) line: 112

Interpreted19Block.evalBlockBody(ThreadContext, Binding, IRubyObject) line: 206 Interpreted19Block.yield(ThreadContext, IRubyObject, Binding, Block$Type) line: 157 Block.yield(ThreadContext, IRubyObject) line: 142

RubyArray.collect(ThreadContext, Block) line: 2400

RubyArray.map19(ThreadContext, Block) line: 2414

RubyArray$INVOKER$i$0$0$map19.call(ThreadContext, IRubyObject, RubyModule, String, Block) line: not available

NormalCachingCallSite(CachingCallSite).callBlock(ThreadContext, IRubyObject, IRubyObject, Block) line: 143

NormalCachingCallSite(CachingCallSite).callIter(ThreadContext, IRubyObject, IRubyObject, Block) line: 154

CallNoArgBlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 64

CallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 57

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 139

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 187

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject) line: 306

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject) line: 136

CallNoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 60

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

IfNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 116 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 182

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 203

FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject) line: 326

FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 170 FCallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 36 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 204

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, Block) line: 211

MetaClass(RubyClass).finvoke(ThreadContext, IRubyObject, String, IRubyObject, Block) line: 568

RubyObject(RubyBasicObject).send19(ThreadContext, IRubyObject, IRubyObject, Block) line: 1568

RubyKernel.send19(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) line: 2211

RubyKernel$INVOKER$s$send19.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject, Block) line: not available

RubyKernel$INVOKER$s$send19(JavaMethod$JavaMethodOneOrTwoOrNBlock).call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject, IRubyObject) line: 367 FunctionalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 346 FunctionalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject) line: 204

FCallTwoArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 38 LocalAsgnNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 123

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

IfNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 116 NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 182

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, String, IRubyObject) line: 203

NormalCachingCallSite(CachingCallSite).cacheAndCall(IRubyObject, RubyClass, ThreadContext, IRubyObject, IRubyObject) line: 326

NormalCachingCallSite(CachingCallSite).call(ThreadContext, IRubyObject, IRubyObject, IRubyObject) line: 170 CallOneArgNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 57

NewlineNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 105

BlockNode.interpret(Ruby, ThreadContext, IRubyObject, Block) line: 71

ASTInterpreter.INTERPRET_METHOD(Ruby, ThreadContext, String, int, RubyModule, Node, String, IRubyObject, Block, boolean) line: 74

InterpretedMethod.call(ThreadContext, IRubyObject, RubyModule, String) line: 139

DefaultMethod.call(ThreadContext, IRubyObject, RubyModule, Str

mattadamson commented 8 years ago

Thanks Robert,

I can certainly try and get a thread dump however the dependencies are as follows

                <dependency>
                    <groupId>org.asciidoctor</groupId>
                    <artifactId>asciidoctorj-pdf</artifactId>
                    <version>1.5.0-alpha.11</version>
                </dependency>
                <dependency>
                    <groupId>org.asciidoctor</groupId>
                    <artifactId>asciidoctorj</artifactId>
                    <version>1.6.0-alpha.3</version>
                </dependency>
                <dependency>
                    <groupId>org.jruby</groupId>
                    <artifactId>jruby</artifactId>
                    <version>1.7.24</version>
                </dependency>                

This is on Windows Java version 1.8.0_45

mattadamson commented 8 years ago

jstack.txt jstack3.txt jstack2.txt

I've attached a few jstacks taken a few seconds apart so you can see how the stack do / don't change much

Many thanks

robertpanzer commented 8 years ago

At least the thread seems to be moving somewhere in the PDF backend. You might want to open this issue in asciidoctor/asciidoctor-pdf as there is nothing really that can be done by AsciidoctorJ.

The thing with Prawn is that they don’t seem to care about Ruby versions < 2.0, i.e. everything below JRuby 9000 will not be supported.

Cheers Robert

Am 02.07.2016 um 18:28 schrieb mattadamson notifications@github.com:

jstack.txt https://github.com/asciidoctor/asciidoctorj/files/344628/jstack.txt jstack3.txt https://github.com/asciidoctor/asciidoctorj/files/344627/jstack3.txt jstack2.txt https://github.com/asciidoctor/asciidoctorj/files/344629/jstack2.txt I've attached a few jstacks taken a few seconds apart so you can see how the stack do / don't change much

Many thanks

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/asciidoctor/asciidoctorj/issues/476#issuecomment-230110153, or mute the thread https://github.com/notifications/unsubscribe/ABHBjtkGb8U8jMqfXn7c-2ot7FEsm8pFks5qRpHGgaJpZM4JDss9.

mattadamson commented 8 years ago

thanks. I see and there is no way we can upgrade to JRuby 9000 easily in Asciidoctorj-pdf ?

robertpanzer commented 8 years ago

The problem is with JRuby on Windows. PDF generation with JRuby 9xxx should work fine on every other OS.

You might want to try running one of 9.0.0.0-9.0.0.4, 9.1.0.0, 9.1.1.0 or 9.1.2.0. It could be that one of them runs. I can no longer remember which version had issues with PDF on Win and which had issues with diagram on Win.

Cheers Robert

Am 02.07.2016 um 18:39 schrieb mattadamson notifications@github.com:

thanks. I see and there is no way we can upgrade to JRuby 9000 easily in Asciidoctorj-pdf ?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/asciidoctor/asciidoctorj/issues/476#issuecomment-230110655, or mute the thread https://github.com/notifications/unsubscribe/ABHBjuGWOUXmGWkHiCBiOsGvtiWQEy_Cks5qRpRUgaJpZM4JDss9.

mattadamson commented 8 years ago

interesting I tried with 9.1.1.0 which does work and run but still hangs. 9.1.2.0 presents an error though

357) Caused by: org.apache.maven.plugin.PluginExecutionException: Execution output-pd f of goal org.asciidoctor:asciidoctor-maven-plugin:1.5.4-SNAPSHOT:process-asciid oc failed: (SystemCallError) Unknown error 123 - FindFirstFile at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default BuildPluginManager.java:115) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor .java:208) ... 19 more Caused by: org.jruby.exceptions.RaiseException: (SystemCallError) Unknown error 123 - FindFirstFile at RUBY.symlink?(uri:classloader:/jruby/kernel/file.rb:127) at RUBY.module:Prawn(uri:classloader:/gems/prawn-1.3.0/lib/prawn.rb:15 ) at RUBY.(uri:classloader:/gems/prawn-1.3.0/lib/prawn.rb:11) at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:944) at RUBY.(root)(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/ruby

robertpanzer commented 8 years ago

Yeah, I reported the error with 9.1.2.0 as jruby/jruby#3957.

Maybe @mojavelinux can take a look at the problem why your rendering doesn’t seem to finish with 9.1.1.0.

Do you have any extensions involved?

Cheers Robert

Am 02.07.2016 um 18:54 schrieb mattadamson notifications@github.com:

interesting I tried with 9.1.1.0 which does work and run but still hangs. 9.1.2.0 presents an error though

357) Caused by: org.apache.maven.plugin.PluginExecutionException: Execution output-pd f of goal org.asciidoctor:asciidoctor-maven-plugin:1.5.4-SNAPSHOT:process-asciid oc failed: (SystemCallError) Unknown error 123 - FindFirstFile at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default BuildPluginManager.java:115) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor .java:208) ... 19 more Caused by: org.jruby.exceptions.RaiseException: (SystemCallError) Unknown error 123 - FindFirstFile at RUBY.symlink?(uri:classloader:/jruby/kernel/file.rb:127) at RUBY.module:Prawn(uri:classloader:/gems/prawn-1.3.0/lib/prawn.rb:15 ) at RUBY.(uri:classloader:/gems/prawn-1.3.0/lib/prawn.rb:11) at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:944) at RUBY.(root)(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/ruby

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/asciidoctor/asciidoctorj/issues/476#issuecomment-230111348, or mute the thread https://github.com/notifications/unsubscribe/ABHBjjU6GJjYf7W2yoGrJqpFWOl9-_S3ks5qRpfPgaJpZM4JDss9.

mattadamson commented 8 years ago

thank @robertpanzer , it did use extensions however I also commented out the dependency to remove that from the list of possible issues.

mojavelinux commented 8 years ago

@mattadamson In the future, please put long traces in a GitHub gist instead of in the comment of the issue. Otherwise, it's really hard to follow.

mojavelinux commented 8 years ago

After reviewing the stack trace, this is just a shot in the dark, but it seems to be a problem with an inline image in a table cell.

Can you try to convert the file using Asciidoctor PDF (Ruby) directly? That will let us know if this is an issue in Asciidoctor PDF or if it relates to JRuby in any way.

It would help if you provided the input file so that I can get a better idea of what it is trying to process.

mojavelinux commented 8 years ago

Btw, how big is this AsciiDoc document? Could you provide a sample?

mattadamson commented 8 years ago

Hi @mojavelinux I wil certainly try to see if I can reproduce similar using native AsciiDoctor PDF however I had issues running last time I need to work through.

I actually let the execution running for a few hours and then hit a Java heap out of memory exception

00:39:57 [ERROR] Java heap space -> [Help 1] 00:39:57 java.lang.OutOfMemoryError: Java heap space 00:39:57 at org.joni.OptMapInfo.(OptMapInfo.java:31) 00:39:57 at org.joni.NodeOptInfo.(NodeOptInfo.java:30) 00:39:57 at org.joni.Analyser.optimizeNodeLeft(Analyser.java:2160) 00:39:57 at org.joni.Analyser.optimizeNodeLeft(Analyser.java:2235) 00:39:57 at org.joni.Analyser.optimizeNodeLeft(Analyser.java:1968) 00:39:57 at org.joni.Analyser.optimizeNodeLeft(Analyser.java:1979) 00:39:57 at org.joni.Analyser.setOptimizedInfoFromTree(Analyser.java:2256) 00:39:57 at org.joni.Analyser.compile(Analyser.java:154) 00:39:57 at org.joni.Regex.(Regex.java:159) 00:39:57 at org.joni.Regex.(Regex.java:136) 00:39:57 at org.jruby.RubyRegexp.makeRegexp(RubyRegexp.java:149) 00:39:57 at org.jruby.RubyRegexp.getRegexpFromCache(RubyRegexp.java:163) 00:39:57 at org.jruby.RubyRegexp.initializeCommon19(RubyRegexp.java:1515) 00:39:57 at org.jruby.RubyRegexp.initializeCommon19(RubyRegexp.java:1483) 00:39:57 at org.jruby.RubyRegexp.initialize_m19(RubyRegexp.java:1424) 00:39:57 at org.jruby.RubyRegexp$INVOKER$i$initialize_m19.call(RubyRegexp$INVOKER$i$initialize_m19.gen) 00:39:57 at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrN.call(JavaMethod.java:771) 00:39:57 at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:177) 00:39:57 at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:183) 00:39:57 at org.jruby.RubyClass.newInstance(RubyClass.java:857) 00:39:57 at org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen) 00:39:57 at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrNBlock.call(JavaMethod.java:297) 00:39:57 at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168) 00:39:57 at rubyjit.Prawn::Text::Formatted::LineWrap$$scan_pattern_8e211393cbd4d6fe99db79fb6b07b51c67ba5058910478353.file(/var/jenkins/workspace/MyProject/.repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.11/asciidoctorj-pdf-1.5.0-alpha.11.jar!/gems/prawn-1.3.0/lib/prawn/text/formatted/line_wrap.rb:127) 00:39:57 at rubyjit.Prawn::Text::Formatted::LineWrap$$scan_pattern_8e211393cbd4d6fe99db79fb6b07b51c67ba5058910478353.file(/var/jenkins/workspace/MyProject/.repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.11/asciidoctorj-pdf-1.5.0-alpha.11.jar!/gems/prawn-1.3.0/lib/prawn/text/formatted/line_wrap.rb) 00:39:57 at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:141) 00:39:57 at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134) 00:39:57 at rubyjit.Prawn::Text::Formatted::LineWrap$$tokenize_b7ad81a75b2a2ad5a5d959d4635c098632f9a6f4910478353.file(/var/jenkins/workspace/MyProject/.repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.11/asciidoctorj-pdf-1.5.0-alpha.11.jar!/gems/prawn-1.3.0/lib/prawn/text/formatted/line_wrap.rb:33) 00:39:57 at rubyjit.Prawn::Text::Formatted::LineWrap$$tokenize_b7ad81a75b2a2ad5a5d959d4635c098632f9a6f4910478353.file(/var/jenkins/workspace/MyProject/.repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.11/asciidoctorj-pdf-1.5.0-alpha.11.jar!/gems/prawn-1.3.0/lib/prawn/text/formatted/line_wrap.rb) 00:39:57 at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:181) 00:39:57 at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168) 00:39:57 at rubyjit.Prawn::Text::Formatted::LineWrap$$add_fragment_to_line_6a8eab50bd6baf2c74a6acadd734c3d68e5179d0910478353.file(/var/jenkins/workspace/MyProject/.repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.11/asciidoctorj-pdf-1.5.0-alpha.11.jar!/gems/prawn-1.3.0/lib/prawn/text/formatted/line_wrap.rb:96)

If you can let me know a private address I could zip and send you the documentation?

mattadamson commented 8 years ago

I've also just reproduced the performance issue in native asciidoctor pdf i.e. without JRuby or asciidoctorj. Is there any easy way to take a stack trace of the ruby gem as it's currently running? I can't see an obvious approach on google. This should tell us what Ruby is doing at this time and perhaps correlate closely with the stack above

mojavelinux commented 8 years ago

If you can let me know a private address I could zip and send you the documentation?

See https://github.com/asciidoctor/asciidoctor/commit/9d116e52e9caec9f49ff030e2e0f9e5a37c58c0e.patch

mojavelinux commented 8 years ago

Is there any easy way to take a stack trace of the ruby gem as it's currently running?

I've never done it myself, but that's what pry is all about.

mojavelinux commented 8 years ago

I received the project files from @mattadamson and had a look over them. I'll report what I found here.

First, as a word of warning, this document is pushing the physical limits of what Asciidoctor PDF can handle in a single file. There are well over 1,000 pages in the generated PDF. Keep in mind that Asciidoctor PDF does a "dry run" on many of the blocks, so we're really talking about double that amount of work.

...but, that's no what's causing the converter crash. If I disable the problematic lines, it generates the PDF in ~ 2 minutes.

So what are the problematic lines?

Some of the base64 encoded strings in the JSON snippets are enormous (namely the image values, some of which are nearly 1/2 million characters long). These extremely long lines cause the processing code used for listing and literal blocks to choke. (In fact, those files even cause VIM to choke).

All of the problematic lines are imported by the btr.adoc file. I recommend truncating those values to a reasonable size. Then you should be able to generate the PDF.

The reasonable limit for a single line seems to be somewhere between 10,000 and 100,000 characters. After that, the processing time increases substantially.

Another way to speed things up is to create a new theme (just copy the default-theme.yml file from the package) and disable the fallback font. When the fallback font is enabled, Asciidoctor PDF goes character by character to check if the character is present in the font file. When working with very large documents, this can really impact performance. (See https://github.com/asciidoctor/asciidoctor-pdf/blob/master/docs/theming-guide.adoc#fallback-fonts).

mattadamson commented 8 years ago

thanks @mojavelinux this is very helpful and comprehensive. I will certainly look at triming these JSON values as we can manage this by reducing fine.

I had a cursory look at the fallback font however I'm not entirely clear how this maps to a configuration we pass to ascii doctorj. So I simply copy the default theme from where? Then edit this to disable the fallback font

mojavelinux commented 8 years ago

@mattadamson I'll update the theming guide to include a tip about how to use the default theme as a starting point. Here's that text:

Another option is to download the default-theme.yml file from the source repository. Save the file using a unique name (e.g., custom-theme.yml) and start hacking on it.

Alternatively, you can snag the file from your local installation using the following command:

$ ASCIIDOCTOR_PDF_DIR=`gem contents asciidoctor-pdf --show-install-dir`;\
  cp "$ASCIIDOCTOR_PDF_DIR/data/themes/default-theme.yml" custom-theme.yml

Then read the following section to learn how to apply your custom theme: https://github.com/asciidoctor/asciidoctor-pdf/blob/master/docs/theming-guide.adoc#applying-your-theme

If you use the fonts defined in the default theme, you don't have to worry about specifying a fonts directory.

Happy hacking!

mojavelinux commented 8 years ago

Btw, you can use the wc -L command on a file to find the size of the longest line. I recommend running this command (or something similar to it) across the generated files if you experience another hang and that should help you quickly identify the problematic file.

mattadamson commented 8 years ago

Thanks @mojavelinux

After removing some of the very long lines it actually runs to completion now in approximately 30 minutes. Still a long time however at least it completes.

On the subject of fall back fonts this section is very helpful

https://github.com/asciidoctor/asciidoctor-pdf/blob/master/docs/theming-guide.adoc#fallback-fonts

However it references in the form as square bracket separated

fallbacks: [DroidSansFallback]

although

https://raw.githubusercontent.com/asciidoctor/asciidoctor-pdf/master/data/themes/default-theme.yml

does not and uses this notation

fallbacks:
  - M+ 1p Fallback

I do see a section

M+ 1p Fallback A sans-serif font that provides a very complete set of Unicode glyphs. Cannot be styled as italic, bold or bold_italic. Useful as a fallback font.

What does the - prefix indicate here in "- M" ? I thought simply not specifying the font would not add it e.g. we should have an empty section so just include "fallbacks:". Why is this value also not square bracket delimitted?

On a related note the PDF file is approximately 100MB. For 1000 pages with simple text content is this a little suprising? I was thinking text should simply compress extremely well perhaps as well as it would in a standard text file? I did read something about the ascii doctor pdf / prawn component directly writing text data to an image though so perhaps it's because each page is represented as an image instead?

mojavelinux commented 8 years ago

After removing some of the very long lines it actually runs to completion now in approximately 30 minutes.

Can you tell me what the longest line is in all of your files?

$ find -name '*.adoc' -exec cat {} + |
  awk -v l=0 'length>l {l=length}; END{print l}'

If all the lines are a reasonable size, it should generate in < 5 minutes.

Still a long time however at least it completes.

Asciidoctor PDF has to do an incredible amount of work due to the limitations of both PDF and Prawn...so yeah, it's not the fastest tool in the shed.

However it references in the form as square bracket separated

This is just another way to write an array value in YAML. I've updated the guide to use the more traditional, multi-line syntax. (See the YAML spec for more info).

the PDF file is approximately 100MB. For 1000 pages with simple text content is this a little suprising? I was thinking text should simply compress extremely well perhaps as well as it would in a standard text file?

Asciidoctor PDF does produce a genuine postscript document made up of vector objects (the only images it contains are embedded raster images). However, due to a bug in Prawn, the object tree is not optimized or garbage collected. So it likely has a lot of unreachable objects in it. That's where the optimize PDF script comes in. That script uses Ghostscript to reoptimize the whole PDF...an operation better done in C. There's an open issue to expose that as part of the converter. Currently, it's just a one-off script. See https://github.com/asciidoctor/asciidoctor-pdf/issues/535.

mattadamson commented 8 years ago

thanks. I got an error running this however I'm on a Mac OS X

find -name '*.adoc' -exec cat {} + | awk -v l=0 'length>l {l=length}; END{print l}' find: illegal option -- n usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]

I tried ghostscript and it managed to compress down from ~100 MB to 10 MB using the following. We can include this and the installation of ghostscript in our build script

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf inputpdf.pdf

mojavelinux commented 8 years ago

If you have another way to find the longest line, just use that. I found that script on stack overflow.

mojavelinux commented 8 years ago

That ghostscript command proves my point that the object tree Prawn creates just isn't optimized.

reitzig commented 2 years ago

I was able to cut PDF build time with asciidoctor-pdf in half just by installing gem prawn-gmagick. That has native component and dependencies, though, so I don't know how easy it would be to integrate here.