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',
|
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 {
|
sub parents_exclude {
|
||||||
|
Loading…
Reference in New Issue
Block a user