Hi there, On Sun, May 01, 2016 at 09:58:53PM +0200, Sebastian Geerken wrote:
On So, Mai 01, 2016, Jorge Arellano Cid wrote:
Hi,
If I start current dillo with [1], an https dialog springs (untrusted certificate). Answering "continue" gets into a CPU hog, answering "cancel" allows reading the page with no problems.
FWIW, I've done that lots of times with other sites, and this is the first CPU hog I get accross.
[1] https://linux.slashdot.org/comments.pl?sid=5852295&cid=48188823
I can reproduce this. However, profiling shows rather problems in the rendering code (dw::core::Widget::queueResize etc.), so the problem is probably not related to HTTPS.
Also, mirroring this page ("wget -pkH") and displaying it locally shows the same symptoms.
Looks that this belongs rather on my todo list.
Good news on this one. Patch committed! I'd like to comment a bit on this bugfix for those that would like to help making patches for dillo. You can check the patch and verbose log with: "hg log -vp|less". It was hard to find, sometimes backtraces gave near 85 or more nested calls, full of different functions. There was no CPU lock because it finally solved the page (after more than two minutes in my machine). It took a few days of work, by reducing the testcase (a slashdot page) by: * removing the scripting * removing one stylesheet completely (no bug without CSS). * removing sections of the HTML code while checking the bug was still reproducible. And checking the backtrace stack from gdb from time to time. gprof may have served also, but as there where so many functions I decided to keep reducing the case. This is a trial&error iteration process. At some point I could clean the testcase enough to run tidy on it, and no, it wasn't a tag soup corner case. Back to reducing the testcase. It started to solve in less time, but still hogging my CPU for near 20 secs.. Then suddenly at some point, gdb's backtrace was still near the hundred in depth, but a few functions remained. Studying the code in the involved functions made me finally spot the hiding bug. Trivial to fix, but very hard to find. For this case, what took more than 2 minutes to render, now takes near 1/8 second. ;-) -- Cheers Jorge.-