Re: libDAR skips files above 3 KB - Please help
Satheesh <satheesh_sskzm-/[email protected]> Fri, 25 Apr 2008 20:29:32 +0000 (UTC)
| Newsgroups | gmane.comp.sysutils.backup.dar.libdar |
|---|---|
| Message-ID | <[email protected]> |
Denis Corbin <dar.linux@...> writes: > > > Satheesh Kumar wrote: > > Hi All, > > Hello, > > > I am new to libDAR and trying to get it work from a pthread routine on ppc-64 platform running AIX 5.3 (32 bit > kernel mode) - compiled from source using gcc and statically linked. Specific routine that I've used is > "create_archive_noexcept". It backs up files less than about 3200 bytes only and fails for anything > bigger. Using GDB, I found that Erange-exception thrown for failed files at "fichier::inherited_read" > due to a failed ::read. If I invoke libdar function from my main thread, all files are getting backed up. > Problem happens only when libdar invoked from a child thread. The directory that I am trying to backup is > just about 200 MB and 2000+ files. I've provided 1 GB swap space and following are my process ulimits. I had > tried to set all those values as unlimited but with no eff > ect. Is it required to increase thread stack size by calling pthread_attr_setstacksize() ? If so, how do I > guestimate that value ? > > > > For what I understand, the problem whe you call libdar from a thread is > a lack of permission to read files you want to backup. Permission > problem that does not exist when you do not use threads, right? > > If so, I see no relation with this and any of the ulimit parameters. I > would rather try to find out why the thread you create do not have the > same permission than the process it is spawn from. > > > bash-3.2# ulimit -a > > core file size (blocks, -c) 1048575 > > data seg size (kbytes, -d) 131072 > > file size (blocks, -f) unlimited > > max memory size (kbytes, -m) 32768 > > open files (-n) 2000 > > pipe size (512 bytes, -p) 64 > > stack size (kbytes, -s) 32768 > > cpu time (seconds, -t) unlimited > > max user processes (-u) 262144 > > virtual memory (kbytes, -v) unlimited > > > > I also attempted to dynamically link libdar when the same exception got thrown for files above ~3200 > bytes. Even though exception is being caught by "filtre_sauvegarde", it was crashing with the following > stack trace - > > > > Program received signal SIGILL, Illegal instruction. > > 0x00000000 in ?? () > > (gdb) bt > > #0 0x00000000 in ?? () > > #1 0xd1fecd4c in libdar::user_interaction::warning ( > > this=0x200dd8d4, message=@0x200f8688) > > at user_interaction.cpp:113 > > Probably the reference to the user_interaction object you gave is not valid. > > > #2 0xd20c5e98 in libdar::filtre_sauvegarde ( > > dialog=@0x200dd8d4, filtre=@0x200dd90c, > > subtree=@0x200dd91c, stockage=0x200fd3c8, > > cat=@0x201e75a8, ref=@0x201e74f8, > > fs_racine=@0xf0a7c328, info_details=true, > > st=@0xf0b81ab4, make_empty_dir=false, > > ea_mask=@0x200f9124, compr_mask=@0x200dd92c, > > min_compr_size=@0x200f9110, nodump=false, > > hourshift=@0x200f910c, alter_atime=false, > > same_fs=false, what_to_check=cf_all, > > snapshot=false, cache_directory_tagging=false, > > display_skipped=false, fixed_date=@0x200f9108) > > at filtre.cpp:592 > > > > Any help would be greatly appreciated. > > > > Thanks, > > Satheesh > > > > Regards, > Denis. > Thanks Denis. The libdar thread has root privileges (getuid returned 0 - same as the process) and more over certain files on the same directory with same permissions are being read correctly. fichier::open succceds for those files however fichier::inherited_read fails. ::read is failing for files above ~3.2 K only. I verified the same use-case on RH Linux EL4 on x86 where this problem do not happen. I am using libdar version 2.3.6. Regards, Satheesh ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone