Control: reassign -1 torsocks

Since the strace indicates the program gets stuck inside jemalloc, I’ve tried 
to recompile dig with and without jemalloc and the aforementioned behavior 
doesn’t happen when BIND 9 is not compiled with jemalloc.

This can be hardly fixed on BIND 9 side as it happens before the control is 
passed to the main library.

I’ll leave it up for the torsocks maintainer to decide whether this is problem 
in torsocks or in jemalloc.

#0  futex_wait (private=0, expected=2, futex_word=0x7ffff7cd57c0 
<init_lock+64>) at ../sysdeps/nptl/
futex-internal.h:146                              #1  __GI___lll_lock_wait 
(futex=futex@entry=0x7fff
f7cd57c0 <init_lock+64>, private=0) at ./nptl/lowlevellock.c:49                 
                    
#2  0x00007ffff76ab3d2 in lll_mutex_lock_optimized (mutex=0x7ffff7cd57c0 
<init_lock+64>) at ./nptl/p
thread_mutex_lock.c:48                            #3  ___pthread_mutex_lock 
(mutex=mutex@entry=0x7ff
ff7cd57c0 <init_lock+64>) at ./nptl/pthread_mutex_lock.c:93                     
                    
#4  0x00007ffff7c923a0 in malloc_mutex_lock_final (mutex=0x7ffff7cd5780 
<init_lock>) at include/jema
lloc/internal/mutex.h:151                         #5  je_malloc_mutex_lock_slow 
(mutex=mutex@entry=0
x7ffff7cd5780 <init_lock>) at src/mutex.c:90      #6  0x00007ffff7c21249 in 
malloc_mutex_lock (mutex
=0x7ffff7cd5780 <init_lock>, tsdn=0x0) at include/jemalloc/internal/mutex.h:217 
                    
#7  malloc_init_hard () at src/jemalloc.c:2118    #8  0x00007ffff7c22755 in 
malloc_init () at src/je
malloc.c:298

#9  imalloc_init_check (dopts=<synthetic pointer>, sopts=<synthetic pointer>) 
at src/jemalloc.c:2658
#10 imalloc (dopts=<optimized out>, sopts=<optimized out>) at 
src/jemalloc.c:2689                   
#11 je_malloc_default (size=40) at src/jemalloc.c:2722                          
                    
#12 0x00007ffff7fcd900 in malloc (size=40) at ../include/rtld-malloc.h:56       
                    
#13 _dl_map_object_deps (map=map@entry=0x7ffff7f07580, 
preloads=preloads@entry=0x0, npreloads=nprelo
ads@entry=0, trace_mode=trace_mode@entry=0, 
open_mode=open_mode@entry=-2147483648) at ./elf/dl-deps.
c:463                                             #14 0x00007ffff7fd6a6d in 
dl_open_worker_begin (a=
a@entry=0x7fffffffac30) at ./elf/dl-open.c:592    #15 0x00007ffff776dfca in 
__GI__dl_catch_exception
 (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at 
./elf/dl-error-skelet
on.c:208                                          #16 0x00007ffff7fd61c6 in 
dl_open_worker (a=a@entr
y=0x7fffffffac30) at ./elf/dl-open.c:782

#17 0x00007ffff776dfca in __GI__dl_catch_exception (exception=<optimized out>, 
operate=<optimized ou
t>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208                      
                    
#18 0x00007ffff7fd65b8 in _dl_open (file=0x7ffff7fba04c "libc.so.6", 
mode=<optimized out>, caller_dl
open=0x7ffff7faf9bf <tsocks_init+127>, nsid=<optimized out>, argc=3, 
argv=0x7fffffffdd98, env=0x7fff
ffffddb8) at ./elf/dl-open.c:884                  #19 0x00007ffff76a4438 in 
dlopen_doit (a=a@entry=0
x7fffffffaea0) at ./dlfcn/dlopen.c:56             #20 0x00007ffff776dfca in 
__GI__dl_catch_exception
 (exception=exception@entry=0x7fffffffae00, operate=<optimized out>, 
args=<optimized out>) at ./elf/
dl-error-skeleton.c:208                           #21 0x00007ffff776e07f in 
__GI__dl_catch_error (ob
jname=0x7fffffffae58, errstring=0x7fffffffae60, mallocedp=0x7fffffffae57, 
operate=<optimized out>, a
rgs=<optimized out>) at ./elf/dl-error-skeleton.c:227

#22 0x00007ffff76a3f27 in _dlerror_run (operate=op
erate@entry=0x7ffff76a43e0 <dlopen_doit>, args=args@entry=0x7fffffffaea0) at 
./dlfcn/dlerror.c:138  
#23 0x00007ffff76a44e9 in dlopen_implementation (dl_caller=<optimized out>, 
mode=<optimized out>, fi
le=<optimized out>) at ./dlfcn/dlopen.c:71        #24 ___dlopen 
(file=<optimized out>, mode=<optimiz
ed out>) at ./dlfcn/dlopen.c:81                   #25 0x00007ffff7faf9bf in 
init_libc_symbols () at 
./src/lib/torsocks.c:233                          #26 tsocks_init () at 
./src/lib/torsocks.c:332    
#27 0x00007ffff7fb6616 in tsocks_once (o=0x7ffff7fc2060 <init_once>, 
init_routine=0x7ffff7faf940 <ts
ocks_init>) at ./src/common/compat.c:94      

      #28 0x00007ffff7fcf9ce in call_init (             
    env=0x7fffffffddb8, argv=0x7fffffffdd98,          argc=3, l=<optimized 
out>)                    
    at ./elf/dl-init.c:74                         #29 call_init (l=<optimized 
out>, argc=3,         
    argv=0x7fffffffdd98, env=0x7fffffffddb8)          at ./elf/dl-init.c:26     
                    
#30 0x00007ffff7fcfab4 in _dl_init (                  main_map=0x7ffff7ffe2e0, 
argc=3,              
    argv=0x7fffffffdd98, env=0x7fffffffddb8)          at ./elf/dl-init.c:121    
                    
#31 0x00007ffff7fe5a80 in _dl_start_user ()          from 
/lib64/ld-linux-x86-64.so.2               
#32 0x0000000000000003 in ?? ()                   #33 0x00007fffffffe09e in ?? 
()                   
#34 0x00007fffffffe0cc in ?? ()                   #35 0x00007fffffffe0cf in ?? 
()                   
#0  futex_wait (private=0, expected=2, futex_word=0x7ffff7cd57c0 
<init_lock+64>) at ../sysdeps/nptl/
futex-internal.h:146                              #1  __GI___lll_lock_wait 
(futex=futex@entry=0x7fff
f7cd57c0 <init_lock+64>, private=0) at ./nptl/lowlevellock.c:49                 
                    
#2  0x00007ffff76ab3d2 in lll_mutex_lock_optimized (mutex=0x7ffff7cd57c0 
<init_lock+64>) at ./nptl/p
thread_mutex_lock.c:48                            #3  ___pthread_mutex_lock 
(mutex=mutex@entry=0x7ff
ff7cd57c0 <init_lock+64>) at ./nptl/pthread_mutex_lock.c:93                     
                    
#4  0x00007ffff7c923a0 in malloc_mutex_lock_final (mutex=0x7ffff7cd5780 
<init_lock>) at include/jema
lloc/internal/mutex.h:151                         #5  je_malloc_mutex_lock_slow 
(mutex=mutex@entry=0
x7ffff7cd5780 <init_lock>) at src/mutex.c:90      #6  0x00007ffff7c21249 in 
malloc_mutex_lock (mutex
=0x7ffff7cd5780 <init_lock>, tsdn=0x0) at include/jemalloc/internal/mutex.h:217 
            
#7  malloc_init_hard () at src/jemalloc.c:2118 
#8  0x00007ffff7c22755 in malloc_init () at src/jemalloc.c:298                  
                    
#9  imalloc_init_check (dopts=<synthetic pointer>, sopts=<synthetic pointer>) 
at src/jemalloc.c:2658
#10 imalloc (dopts=<optimized out>, sopts=<optimized out>) at 
src/jemalloc.c:2689                   
#11 je_malloc_default (size=40) at src/jemalloc.c:2722                          
                    
#12 0x00007ffff7fcd900 in malloc (size=40) at ../include/rtld-malloc.h:56       
                    
#13 _dl_map_object_deps (map=map@entry=0x7ffff7f07580, 
preloads=preloads@entry=0x0, npreloads=nprelo
ads@entry=0, trace_mode=trace_mode@entry=0, 
open_mode=open_mode@entry=-2147483648) at ./elf/dl-deps.
c:463                                             #14 0x00007ffff7fd6a6d in 
dl_open_worker_begin (a=
a@entry=0x7fffffffac30) at ./elf/dl-open.c:592    #15 0x00007ffff776dfca in 
__GI__dl_catch_exception
 (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at 
./elf/dl-error-skelet
on.c:208                                          #16 0x00007ffff7fd61c6 in 
dl_open_worker (a=a@entr
y=0x7fffffffac30) at ./elf/dl-open.c:782

#17 0x00007ffff776dfca in __GI__dl_catch_exception (exception=<optimized out>, 
operate=<optimized ou
t>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208                      
                    
#18 0x00007ffff7fd65b8 in _dl_open (file=0x7ffff7fba04c "libc.so.6", 
mode=<optimized out>, caller_dl
open=0x7ffff7faf9bf <tsocks_init+127>, nsid=<optimized out>, argc=3, 
argv=0x7fffffffdd98, env=0x7fff
ffffddb8) at ./elf/dl-open.c:884                  #19 0x00007ffff76a4438 in 
dlopen_doit (a=a@entry=0
x7fffffffaea0) at ./dlfcn/dlopen.c:56             #20 0x00007ffff776dfca in 
__GI__dl_catch_exception
 (exception=exception@entry=0x7fffffffae00, operate=<optimized out>, 
args=<optimized out>) at ./elf/
dl-error-skeleton.c:208                           #21 0x00007ffff776e07f in 
__GI__dl_catch_error (ob
jname=0x7fffffffae58, errstring=0x7fffffffae60, mallocedp=0x7fffffffae57, 
operate=<optimized out>, a
rgs=<optimized out>) at ./elf/dl-error-skeleton.c:227                           
                    
#22 0x00007ffff76a3f27 in _dlerror_run (operate=operate@entry=0x7ffff76a43e0 
<dlopen_doit>, args=arg
s@entry=0x7fffffffaea0) at ./dlfcn/dlerror.c:138

#23 0x00007ffff76a44e9 in dlopen_implementation (dl_caller=<optimized out>, 
mode=<optimized out>, fi
le=<optimized out>) at ./dlfcn/dlopen.c:71        #24 ___dlopen 
(file=<optimized out>, mode=<optimiz
ed out>) at ./dlfcn/dlopen.c:81                   #25 0x00007ffff7faf9bf in 
init_libc_symbols () at 
./src/lib/torsocks.c:233                          #26 tsocks_init () at 
./src/lib/torsocks.c:332    
#27 0x00007ffff7fb6616 in tsocks_once (o=0x7ffff7fc2060 <init_once>, 
init_routine=0x7ffff7faf940 <ts
ocks_init>) at ./src/common/compat.c:94           #28 0x00007ffff7faf74b in 
tsocks_initialize () at 
./src/lib/torsocks.c:711                          #29 0x00007ffff7fb3235 in 
syscall (number=number@e
ntry=2) at ./src/lib/syscall.c:628                #30 0x00007ffff7c9503b in 
os_overcommits_proc () a
t src/pages.c:627                                 #31 je_pages_boot () at 
src/pages.c:789           
#32 0x00007ffff7c206a5 in malloc_init_hard_a0_locked () at src/jemalloc.c:1834  
                    
#33 0x00007ffff7c20fe1 in malloc_init_hard () at src/jemalloc.c:2129

#34 0x00007ffff7c22755 in malloc_init () at src/jemalloc.c:298                  
                    
#35 imalloc_init_check (dopts=<synthetic pointer>, sopts=<synthetic pointer>) 
at src/jemalloc.c:2658
#36 imalloc (dopts=<optimized out>, sopts=<optimized out>) at 
src/jemalloc.c:2689                   
#37 je_malloc_default (size=72704) at src/jemalloc.c:2722                       
                    
#38 0x00007ffff74a57ba in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6       
                    
#39 0x00007ffff7fcf9ce in call_init (env=0x7fffffffddb8, argv=0x7fffffffdd98, 
argc=3, l=<optimized o
ut>) at ./elf/dl-init.c:74                        #40 call_init (l=<optimized 
out>, argc=3, argv=0x7
fffffffdd98, env=0x7fffffffddb8) at ./elf/dl-init.c:26                          
                    
#41 0x00007ffff7fcfab4 in _dl_init (main_map=0x7ffff7ffe2e0, argc=3, 
argv=0x7fffffffdd98, env=0x7fff
ffffddb8) at ./elf/dl-init.c:121                  #42 0x00007ffff7fe5a80 in 
_dl_start_user () from /
lib64/ld-linux-x86-64.so.2                        #43 0x0000000000000003 in ?? 
()                   
#44 0x00007fffffffe09e in ?? ()
#45 0x00007fffffffe0cc in ?? ()                   #46 0x00007fffffffe0cf in ?? 
()                   
#47 0x0000000000000000 in ?? ()

Ondrej
--
Ondřej Surý (He/Him)

> On 4. 9. 2024, at 14:39, Ondřej Surý <ond...@sury.org> wrote:
> 
> 
>> On 4. 9. 2024, at 14:12, Manny <debbug.1080...@sideload.33mail.com> wrote:
>> The “-d” parameter is undocumented (another bug)
> 
> No, it’s not a bug.
> 
>> and in this case it has no effect.
> 
> This probably means that dig isn’t executed at all.
> 
>> No output is generated before the hang. When “strace
>> -f” is used as follows:
>> 
>> $ torsocks strace -f dig @"$dns_server" -d -t mx -q "$email_domain" +noclass 
>> +nocomments +nostats +short +tcp +nosearch
>> 
>> The tail of the output when it hangs is as follows:
> 
> The last few lines are useless. Full output is needed.
> 
> Ondrej
> --
> Ondřej Surý (He/Him)
> 

Reply via email to