hmgle / graftcp

A flexible tool for redirecting a given program's TCP traffic to SOCKS5 or HTTP proxy.
GNU General Public License v3.0
2.1k stars 173 forks source link

stalling #8

Open untoreh opened 5 years ago

untoreh commented 5 years ago

Describe the bug using graftcp with some tools stalls indefinitely

To Reproduce Steps to reproduce the behavior: graftcp-local -socks5 :9050 graftcp curl ipinfo.io

Expected behavior contrary to curl, wget doesn't stall and works

Desktop (please complete the following information):

Additional context

execve("/opt/bin/graftcp", ["graftcp", "curl", "ipinfo.io"], 0x7fff26890a20 /* 18 vars */) = 0
arch_prctl(ARCH_SET_FS, 0x7f419063bb88) = 0
set_tid_address(0x7f419063bbc0)         = 253654
mprotect(0x7f4190638000, 4096, PROT_READ) = 0
mprotect(0x562142fa1000, 4096, PROT_READ) = 0
brk(NULL)                               = 0x562144572000
brk(0x562144574000)                     = 0x562144574000
open("/tmp/graftcplocal.fifo", O_WRONLY) = 3
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
fork()                                  = 253655
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGSTOP}], 0, NULL) = 253655
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=253655, si_uid=0, si_status=SIGSTOP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_SETOPTIONS, 253655, NULL, PTRACE_O_TRACEFORK|PTRACE_O_TRACEVFORK|PTRACE_O_TRACECLONE|PTRACE_O_TRACEEXEC) = 0
ptrace(PTRACE_SYSCALL, 253655, NULL, SIG_0) = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 253655
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=253655, si_uid=0, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_PEEKUSER, 253655, 8*ORIG_RAX, [0x3b]) = 0
ptrace(PTRACE_SYSCALL, 253655, NULL, SIG_0) = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 253655
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=253655, si_uid=0, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_SYSCALL, 253655, NULL, SIG_0) = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 253655
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=253655, si_uid=0, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
hmgle commented 5 years ago

@untoreh I can't reproduce it on my machine for the moment, maybe I should build a virtual machine of alpine linux 3.8. Thank you for the feedback.

guihkx commented 2 years ago

Sorry to necrobump this, but I'm having the same issue with wine 7.0 (most likely affects any version).

Merely running wine cmd with graftcp causes the following, ad infinitum:

execve("/usr/bin/graftcp", ["graftcp", "wine", "cmd"], 0x7ffd332d2ce0 /* 61 vars */) = 0
brk(NULL)                               = 0x559442e06000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffd60844cc0) = -1 EINVAL (Invalid argument)
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=156836, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 156836, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f68d6aa2000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib/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\0`|\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"..., 80, 848) = 80
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0K@g7\5w\10\300\344\306B4Zp<G"..., 68, 928) = 68
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=2150424, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f68d6aa0000
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, 1880536, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f68d68d4000
mmap(0x7f68d68fa000, 1355776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26000) = 0x7f68d68fa000
mmap(0x7f68d6a45000, 311296, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x171000) = 0x7f68d6a45000
mmap(0x7f68d6a91000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bc000) = 0x7f68d6a91000
mmap(0x7f68d6a97000, 33240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f68d6a97000
close(3)                                = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f68d68d2000
arch_prctl(ARCH_SET_FS, 0x7f68d6aa15c0) = 0
mprotect(0x7f68d6a91000, 12288, PROT_READ) = 0
mprotect(0x559440ed3000, 4096, PROT_READ) = 0
mprotect(0x7f68d6af7000, 8192, PROT_READ) = 0
munmap(0x7f68d6aa2000, 156836)          = 0
brk(NULL)                               = 0x559442e06000
brk(0x559442e27000)                     = 0x559442e27000
openat(AT_FDCWD, "/tmp/graftcplocal.fifo", O_WRONLY) = 3
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f68d6aa1890) = 45174
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGSTOP}], 0, NULL) = 45174
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGSTOP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_SETOPTIONS, 45174, NULL, PTRACE_O_TRACEFORK|PTRACE_O_TRACEVFORK|PTRACE_O_TRACECLONE|PTRACE_O_TRACEEXEC) = 0
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
ptrace(PTRACE_PEEKUSER, 45174, 8*ORIG_RAX, [0x3b]) = 0
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
ptrace(PTRACE_PEEKUSER, 45174, 8*ORIG_RAX, [0x3b]) = 0
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP} | PTRACE_EVENT_EXEC << 16], 0, NULL) = 45174
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_PEEKUSER, 45174, 8*ORIG_RAX, [0x2d]) = 0
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
ptrace(PTRACE_PEEKUSER, 45174, 8*ORIG_RAX, [0x180]) = 0
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_PEEKUSER, 45174, 8*ORIG_RAX, [0x21]) = 0
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_TRAPPED, si_pid=45174, si_uid=1000, si_status=SIGTRAP, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGTRAP}], 0, NULL) = 45174
ptrace(PTRACE_PEEKUSER, 45174, 8*ORIG_RAX, [0x127]) = 0
ptrace(PTRACE_SYSCALL, 45174, NULL, 0)  = 0