recentchangesdiff causes rendering to segfault if a commit removes a lot of contents. I removed close to 400 files, total size of about 950Kb in a single commit and now
ikiwiki segfaults on refresh and rebuild:
[...] rendering recentchanges.mdwn  5541 segmentation fault ikiwiki --verbose --setup ikiwiki.setup --refresh
If I disable the plugin, the segfault does not happen, but I have to remove
wc/recentchanges/* or else it will crash just as well.
This is reproducible, but I cannot provide the source code.
Can you provide a sanitised version of the source code? I've tried ikiwiki on some files that are just large, and cannot reproduce any problems, so it must be something in the specific file. (A perl bug is also clearly involved here.) --Joey
The tarball is at http://scratch.madduck.net/tmprecentchanges-segfault.tgz - unpack it in
chdir() to /tmp/cdt.taF18912, then run
ikiwiki --setup ikiwiki.setup # segfaults git checkout HEAD^ ikiwiki --setup ikiwiki.setup # segfaults rm -rf wc/recentchanges ikiwiki --setup ikiwiki.setup # works
I can reproduce it fine with that, thanks, and it's really looking like a pure perl bug, that is triggered by markdown. Here's a simpler test case:
joey@kodama:/tmp>markdown < f zsh: segmentation fault markdown < f
Where f is a 6.3 mb file that I extracted from ikiwiki's rendering pipeline.
It seems to be crashing at markdown line 345, which is a big nasty
The good news: markdown version 1.0.2~b8-2 does not trigger this perl bug. I only see it with 1.0.1. (Bad news: Newer versions of markdown are slooooooow, especially on such large files.)
I'm calling this done since I've filed Debian bug #470676 on perl, and also have modified recentchangesdiff to only show the first 200 lines of diff, which should be enough without bloating the recentchanges into perl-crashing territory. --Joey