I use JCEF 3.2849.146 (with CEF 3.2840.1511, Chromium 54.0.2840.59) from java to load html as string, render it and then printToPDF.
on VM with Windows Server 2008 R2 (x64), and XEON X5670
The problem is that it sometimes crashes on loading/rendering process (after call cefBrowser.loadString(..) and before anything else).
I turn on maximum logging and tracing (see below settings).
I loadtesting this app with some samples of html (this is just html + css documents like some A4 report) with loop of load-render-pringToPdf process for each sample
This test successfully runs 1-3 loops. And then crashes on big HTML - one of my sample is 900kb html with 40+ A4 pages.
I test it with and without "--single-process" arg.
With this flag - I see in jcef log:
- Code: Select all
[1213/142840:FATAL:stringview.cpp(20)] Check failed: !m_impl->hasOneRef(). StringView does not own the StringImpl, it must not have the last ref.
and then JVM crashes (i think because of unhandled exception from native code).
Without this flag - in log:
- Code: Select all
[1213/172757:FATAL:stringview.cpp(20)] Check failed: !m_impl->hasOneRef(). StringView does not own the StringImpl, it must not have the last ref.
[1213/172757:VERBOSE1:node_controller.cc(546)] Dropped peer 7490F1E5E0101BBC.C82F151B095CDF55
[1213/172757:VERBOSE1:node.cc(412)] Observing lost connection from node 70D08BFA3A0A984A.7499842B3324C1EF to node 7490F1E5E0101BBC.C82F151B095CDF55
[1213/172757:VERBOSE1:node_controller.cc(668)] Dropping message for unknown peer: 7490F1E5E0101BBC.C82F151B095CDF55
[1213/172757:VERBOSE1:media_stream_dispatcher_host.cc(144)] MediaStreamDispatcherHost::OnChannelClosing
[1213/172757:VERBOSE1:node.cc(391)] Merging local ports 63F870291A5BCE16.ADC45C176096A226@70D08BFA3A0A984A.7499842B3324C1EF and 87B0FCD1EA9AC6D6.9F637775908F91F0@70D08BFA3A0A984A.7499842B3324C1EF
and then nothing happens like in deadlock.
So my questions are:
1. what this error means and can someone tell me how to overcome it ?
2. can i turn off this DCHECK (!m_impl->hasOneRef) ?
3. can i add tracing/logging for more information ?
Also I'll be glad to hear any helpful information about my problem.
PS:
My settings of CefApp:
- Code: Select all
cefSettings.windowless_rendering_enabled = false;
cefSettings.log_severity = log_severity; // VERBOSE
cefSettings.log_file = log_file; // some file where i can see logs
cefSettings.cache_path = someDirectory;
args:
--disable-extensions
--disable-gpu
--enable-logging
--also-emit-success-logs
--trace-config-file
--trace-to-console
--trace-to-file=*
--trace-to-file-name=C:\\jcef_logs\\cef_trace.log // not created
--enable-logging=stdout
--v=1
--memory-profile