]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/bugs/recentchangesdiff_crashes_on_commits_which_remove_a_lot_of_files.mdwn
File issue.
[ikiwiki.git] / doc / bugs / recentchangesdiff_crashes_on_commits_which_remove_a_lot_of_files.mdwn
index ea473ac75af92cd3cd89aaae2493ee22fb4197bf..b3578f26ab107d919487631b14e2e93531a9285a 100644 (file)
@@ -1,4 +1,4 @@
-[[plugin/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:
+[[plugins/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
@@ -12,3 +12,35 @@ This is reproducible, but I cannot provide the source code.
 > 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/__tmp__recentchanges-segfault.tgz - unpack it in `/tmp` and `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
+> `s///` statement.
+
+> 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 [[!debbug 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]]