[Python-apps-team] Bug#781844: rdiff-backup: crashed after hitting process memory limit
Matt Taggart
taggart at debian.org
Fri Apr 3 18:11:17 UTC 2015
Package: rdiff-backup
Version: 1.2.8-7
I am running into a situation where rdiff-backup grows in memory usage
until it crashes.
Client: amd64 userspace, amd64 kernel, 16gb of RAM
Server: i386 userspace, amd64 kernel, 32gb of RAM
Both are using rdiff-backup 1.2.8-7 and librsync 0.9.7-9 (on wheezy)
When backing up a filesystem that contains tens of thousands of files, I
see the memory usage of rdiff-backup on the server grow until it reaches
4gb and then I get the following error:
Feb 28 05:16:06 Error: Found interrupted initial backup. Removing...
Exception '' raised of class '<type 'exceptions.MemoryError'>': File
"/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 304, in
error_check_Main try: Main(arglist) File "/usr/lib/python2.7/dist-packages/r
diff_backup/Main.py", line 324, in Main take_action(rps) File
"/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 280, in
take_action elif action == "backup": Backup(rps[0], rps[1]) File
"/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 346, in
Backup backup.Mirror(rpin, rpout) File "/usr/lib/python2.7/dist-packages/rdi
ff_backup/backup.py", line 38, in Mirror DestS.patch(dest_rpath,
source_diffiter) File "/usr/lib/python2.7/dist-packages/rdiff_backup/connect
ion.py", line 450, in __call__ return apply(self.connection.reval,
(self.name,) + args) File "/usr/lib/python2.7/dist-packages/rdiff_backup/con
nection.py", line 370, in reval if isinstance(result, Exception): raise
result Traceback (most recent call last): File "/usr/bin/rdiff-backup",
line 30, in <module> rdiff_backup.Main.error_check_Main(sys.argv[1:]) File
"/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 304, in
error_check_Main try: Main(arglist) File "/usr/lib/python2.7/dist-packages/r
diff_backup/Main.py", line 324, in Main take_action(rps) File
"/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 280, in
take_action elif action == "backup": Backup(rps[0], rps[1]) File
"/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 346, in
Backup backup.Mirror(rpin, rpout) File "/usr/lib/python2.7/dist-packages/rdi
ff_backup/backup.py", line 38, in Mirror DestS.patch(dest_rpath,
source_diffiter) File "/usr/lib/python2.7/dist-packages/rdiff_backup/connect
ion.py", line 450, in __call__ return apply(self.connection.reval,
(self.name,) + args) File "/usr/lib/python2.7/dist-packages/rdiff_backup/con
nection.py", line 370, in reval if isinstance(result, Exception): raise
result MemoryError Fatal Error: Lost connection to the remote system
The server was recently upgraded from older i386 to new amd64 hardware, so
that is why we have the i386 userspace but are running the amd64 kernel (to
support the new hardware and utilize all the RAM).
I think there might be multiple issues:
A) Why is it using so much memory? I thought even if you have a filesystem
with tons of hardlinks to keep track of it was only supposed to use tens of
megabytes, is growing to 4gb is maybe a memory leak bug?
B) It didn't used to crash before the upgrade to an amd64 kernel, and given
it crashes at 4gb (32bit per process limit) I suspect maybe having the
mixed userspace/kernel has uncovered another bug.
I found a post on the mailing list that may be related
https://lists.nongnu.org/archive/html/rdiff-backup-users/2015-02/msg00011.ht
ml
Thanks,
--
Matt Taggart
taggart at debian.org
More information about the Python-apps-team
mailing list