git-svn: write memoized data explicitly to avoid Storable bug
Apparently using the Storable module during global destruction is unsafe - there is a bug which can cause segmentation faults: http://rt.cpan.org/Public/Bug/Display.html?id=36087 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482355 The persistent memoization support introduced in commit 8bff7c538 relied on global destruction to write cached data, which was leading to segfaults in some Perl configurations. Calling Memoize::unmemoize in the END block forces the cache writeout to be performed earlier, thus avoiding the bug. Signed-off-by: Sergey Vlasov <vsu@altlinux.ru> Acked-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
parent
24e7a5be37
commit
8ac3a66702
16
git-svn.perl
16
git-svn.perl
@ -3169,6 +3169,22 @@ sub has_no_changes {
|
||||
LIST_CACHE => 'FAULT',
|
||||
;
|
||||
}
|
||||
|
||||
sub unmemoize_svn_mergeinfo_functions {
|
||||
return if not $memoized;
|
||||
$memoized = 0;
|
||||
|
||||
Memoize::unmemoize 'lookup_svn_merge';
|
||||
Memoize::unmemoize 'check_cherry_pick';
|
||||
Memoize::unmemoize 'has_no_changes';
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
# Force cache writeout explicitly instead of waiting for
|
||||
# global destruction to avoid segfault in Storable:
|
||||
# http://rt.cpan.org/Public/Bug/Display.html?id=36087
|
||||
unmemoize_svn_mergeinfo_functions();
|
||||
}
|
||||
|
||||
sub parents_exclude {
|
||||
|
Loading…
x
Reference in New Issue
Block a user