jubako / arx

Store files and directory in an archive. Like tar, but faster and with direct random access.
MIT License
151 stars 2 forks source link

ERROR arx] Error : IO Error Invalid argument (os error 22) #41

Closed father-mande closed 3 months ago

father-mande commented 3 months ago

Hi,

On an x86_64 system with Ubuntu 2204 L.T.S. I have generated arx using the last repository : '0.2.1-77-g41dfd11)

create an archive run as well, but when I try to list or mount : ERROR arx] Error : IO Error Invalid argument (os error 22)

please find hereafter the strace : . root@AS6602TaPhil:/opt# strace ./from_git/arx/target/release/arx list ./archive | more execve("./from_git/arx/target/release/arx", ["./from_git/arx/target/release/ar"..., "list", "./archive"], 0x7ffda50127a0 / 29 vars /) = 0 brk(NULL) = 0x56166075b000 archprctl(0x3001 /* ARCH??? /, 0x7fff6bc92ca0) = -1 EINVAL (Invalid argument) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c7bb04000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=34983, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 34983, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f4c7bafb000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libfuse3.so.3", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=252088, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 254136, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f4c7babc000 mmap(0x7f4c7bac3000, 110592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f4c7bac3000 mmap(0x7f4c7bade000, 40960, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7f4c7bade000 mmap(0x7f4c7bae8000, 77824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2b000) = 0x7f4c7bae8000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=125488, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 127720, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f4c7ba9c000 mmap(0x7f4c7ba9f000, 94208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f4c7ba9f000 mmap(0x7f4c7bab6000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7f4c7bab6000 mmap(0x7f4c7baba000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d000) = 0x7f4c7baba000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=940560, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 942344, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f4c7b9b5000 mmap(0x7f4c7b9c3000, 507904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x7f4c7b9c3000 mmap(0x7f4c7ba3f000, 372736, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8a000) = 0x7f4c7ba3f000 mmap(0x7f4c7ba9a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe4000) = 0x7f4c7ba9a000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\237\2\0\0\0\0\0"..., 832) = 832 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0"..., 48, 848) = 48 pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0I\17\357\204\3$\f\221\2039x\324\224\323\236S"..., 68, 896) = 68 newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=2220400, ...}, AT_EMPTY_PATH) = 0 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 mmap(NULL, 2264656, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f4c7b78c000 mprotect(0x7f4c7b7b4000, 2023424, PROT_NONE) = 0 mmap(0x7f4c7b7b4000, 1658880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f4c7b7b4000 mmap(0x7f4c7b949000, 360448, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bd000) = 0x7f4c7b949000 mmap(0x7f4c7b9a2000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x215000) = 0x7f4c7b9a2000 mmap(0x7f4c7b9a8000, 52816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f4c7b9a8000 close(3) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c7b78a000 arch_prctl(ARCH_SET_FS, 0x7f4c7b78b140) = 0 set_tid_address(0x7f4c7b78b410) = 3891398 set_robust_list(0x7f4c7b78b420, 24) = 0 rseq(0x7f4c7b78bae0, 0x20, 0, 0x53053053) = 0 mprotect(0x7f4c7b9a2000, 16384, PROT_READ) = 0 mprotect(0x7f4c7ba9a000, 4096, PROT_READ) = 0 mprotect(0x7f4c7baba000, 4096, PROT_READ) = 0 mprotect(0x7f4c7bae8000, 73728, PROT_READ) = 0 mprotect(0x56165f376000, 159744, PROT_READ) = 0 mprotect(0x7f4c7bb3e000, 8192, PROT_READ) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=81921024, rlim_max=RLIM64_INFINITY}) = 0 munmap(0x7f4c7bafb000, 34983) = 0 poll([{fd=0, events=0}, {fd=1, events=0}, {fd=2, events=0}], 3, 0) = 0 (Timeout) rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f4c7b7ce520}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGSEGV, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGSEGV, {sa_handler=0x56165f23eb10, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_SIGINFO, sa_restorer=0x7f4c7b7ce520}, NULL, 8) = 0 rt_sigaction(SIGBUS, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGBUS, {sa_handler=0x56165f23eb10, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_SIGINFO, sa_restorer=0x7f4c7b7ce520}, NULL, 8) = 0 sigaltstack(NULL, {ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}) = 0 mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4c7bb01000 mprotect(0x7f4c7bb01000, 4096, PROT_NONE) = 0 sigaltstack({ss_sp=0x7f4c7bb02000, ss_flags=0, ss_size=8192}, NULL) = 0 getrandom("\x65\xd2\xfe\xbf\xfe\x66\x77\x91", 8, GRND_NONBLOCK) = 8 brk(NULL) = 0x56166075b000 brk(0x56166077c000) = 0x56166077c000 openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = 3 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0 read(3, "56165ee46000-56165ee81000 r--p 0"..., 1024) = 1024 read(3, "lib/x86_64-linux-gnu/libc.so.6\n7"..., 1024) = 1024 read(3, " /usr/lib/x86_64-linux-gnu/libgc"..., 1024) = 1024 read(3, " /usr/lib/x86_64-li"..., 1024) = 1024 close(3) = 0 sched_getaffinity(3891398, 32, [0, 1, 2, 3]) = 32 ioctl(2, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0 openat(AT_FDCWD, "./archive", O_RDONLY|O_CLOEXEC) = 3 lseek(3, 0, SEEK_END) = 1052047802 lseek(3, 0, SEEK_SET) = 0 lseek(3, 0, SEEK_SET) = 0 read(3, "jbkC\0\0\0\0\0\2\n\367\246\310\1\336A\21\213\\216\36\325<k0\0\0\0\0\0\0"..., 1024) = 1024 lseek(3, 0, SEEK_SET) = 0 read(3, "jbkC\0\0\0\0\0\2\n\367\246\310\1\336A\21\213\\216\36\325<k0\0\0\0\0\0\0"..., 1024) = 1024 lseek(3, 0, SEEK_SET) = 0 read(3, "jbkC\0\0\0\0\0\2\n\367\246\310\1\336A\21\213\\216\36\325<k0\0\0\0\0\0\0"..., 1024) = 1024 lseek(3, 64, SEEK_SET) = 64 read(3, "\t\371\264>\0\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 getrandom("\x03\x3a\xea\xc4\x91\xb9\xba\xd8\x1a\x20\x83\x63\xbb\x2a\x58\x5f", 16, GRND_INSECURE) = 16 lseek(3, 1052047625, SEEK_SET) = 1052047625 read(3, "5\217\246\323G\203E\222\203\6:3\303?,>\270V\235>\0\0\0\0\200\0\0\0\0\0\0\0"..., 1024) = 177 lseek(3, 1052047661, SEEK_SET) = 1052047661 read(3, "SdX~8\22K\271\244\267\206\234\17\225-B\217\236\27\0\0\0\0\08W\235>\0\0\0\0"..., 1024) = 141 lseek(3, 1052047697, SEEK_SET) = 1052047697 read(3, "\vi\334\16B\350Ml\243\260R\16\332\343\356rB\3\0\0\0\0\0\0\307\365\264>\0\0\0\0"..., 1024) = 105 lseek(3, 1052046791, SEEK_SET) = 1052046791 read(3, "jbkmARX\0\0\2\vi\334\16B\350Ml\243\260R\16\332\343\356r\0\0\0\0\0\0"..., 1024) = 1011 lseek(3, 1052046791, SEEK_SET) = 1052046791 read(3, "jbkmARX\0\0\2\vi\334\16B\350Ml\243\260R\16\332\343\356r\0\0\0\0\0\0"..., 1024) = 1011 mmap(NULL, 1549767, PROT_READ, MAP_SHARED|MAP_POPULATE, 3, 0x3e9d5000) = 0x7f4c7b60f000 madvise(0x7f4c7b60f000, 1549767, MADV_POPULATE_READ) = -1 EINVAL (Invalid argument) munmap(0x7f4c7b60f000, 1549767) = 0 close(3) = 0 write(2, "\33[0m\33[38;5;8m[\33[0m\33[0m\33[1m\33[31mE"..., 132[ERROR arx] Error : Opening "./archive": IO Error Invalid argument (os error 22) ) = 132 sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=8192}, NULL) = 0 munmap(0x7f4c7bb01000, 12288) = 0 exit_group(1) = ? +++ exited with 1 +++ root@AS6602TaPhil:/opt#

Is it possible to change the arx version to reflect git version (without large work) ... ex. root@AS6602TaPhil:/opt/from_git/arx# git describe --tags 0.2.1-77-g41dfd11 the result for last git clone ... is not coherent with the last : 668f8aa arx commit identifier ... so it's more clear to be sure we create the correct arx.

Philippe.

mgautierfr commented 3 months ago

Hi,

Can you try with the branch no_populate_read of Jubako please:


Is it possible to change the arx version to reflect git version (without large work) ... ex. so it's more clear to be sure we create the correct arx.

Good idea, I have moved it into a new issue.

father-mande commented 3 months ago

Hi,

Test change Cargo.toml

CHANGE : root@AS6602TaPhil:/opt/from_git/arx# grep jbk Cargo.toml jbk = { git = "https://github.com/jubako/jubako.git", package = "jubako", version = "0.3.0-dev", rev = "no_populate_read" } # jbk = { git = "https://github.com/jubako/jubako.git", package = "jubako", version = "0.3.0-dev" } root@AS6602TaPhil:/opt/from_git/arx#

RESULT (fail) root@AS6602TaPhil:/opt/from_git/arx# cargo update Updating crates.io index Updating git repository https://github.com/jubako/jubako.git error: failed to get jubako as a dependency of package libarx v0.2.1 (/opt/from_git/arx/libarx)

Caused by: failed to load source for dependency jubako

Caused by: Unable to update https://github.com/jubako/jubako.git?rev=no_populate_read

Caused by: revspec 'no_populate_read' not found; class=Reference (4); code=NotFound (-3)

I will test from a clear git clone ...

Philippe.

mgautierfr commented 3 months ago

My bad, use branch = "no_populate_read" instead of rev

father-mande commented 3 months ago

Hi,

Test with branch in place of rev arx is created JUST F.Y.I. : cargo run -r --bin arx -- list ./archive Running target/release/arx list ./archive [ERROR arx] Error : Opening "./archive": IO Error No such file or directory (os error 2) I think a syntax error ...

use arx to create large archive with link correct or broken and broken socket ... (it's a chroot folder) ALL is OK test list : OK correct, no problem JUST in case ofof piped to more and use CRTL\ ... arx return [ERROR arx] Error : IO Error Broken pipe (os error 32) IT'S CORRECT but better to follow Linux rules ... so just stop without error. (ex. like in tar -t) ...

mount work as expected (even it's strange that you don't start it using nohup to free terminal and resources up to umount) .

I have to run more tests but compare mount and original don't identified error or differences.

SO with this version ... all seems to run as expected. ... I will return you problems, if occurs, in my next tests.

Best regards. Philippe.

mgautierfr commented 3 months ago

Good to know. Thanks for all your tests.

cargo run -r --bin arx -- list ./archive Running target/release/arx list ./archive [ERROR arx] Error : Opening "./archive": IO Error No such file or directory (os error 2) I think a syntax error ...

Is ./archive exists and is (supposed to be) an arx archive ?

For other issues, please open a github issue per problem/improvement. I will fix then one after the other. But for now, except in case of blocking issue, I will release a 0.3.0 to validate format change and avoid at maximum version conflicts.

I have merged the PR on jubako side, you can remove the patch on Cargo.toml. I'm closing this issue.