[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1110936: wine crashes when /run/user/uid is not writable and TMPDIR set



Package: wine
Version: 10.0~repack-6
Severity: normal

When /run/user/$uid is not writeable and TMPDIR is set, e.g. in a container wine crashes
on startup. Setting XDG_RUNTIME_DIR to a writable folder does not help.

This is caused by the debian patch debian/patches/fixes/temporary-directory.patch:
https://salsa.debian.org/wine-team/wine/-/blob/debian13-wine10/debian/patches/fixes/temporary-directory.patch?ref_type=heads#L201


To reproduce:

$ docker run -ti --rm debian:trixie bash
$ apt install wine
$ adduser test ....
test@fb6a24900fd6:/$ export TMPDIR=/tmp
test@fb6a24900fd6:/$ ls /run/user/1000
ls: cannot access '/run/user/1000': No such file or directory
test@fb6a24900fd6:/$ id
uid=1000(test) gid=1000(test) groups=1000(test),100(users)
test@fb6a24900fd6$ winecfg
it looks like wine32 is missing, you should install it.
multiarch needs to be enabled first.  as root, please
execute "dpkg --add-architecture i386 && apt-get update &&
apt-get install wine32:i386"
free(): invalid pointer
Aborted (core dumped)

a stacktrace shows the crash in the patched function:
#8  __GI___libc_free (mem=0x7ffcf2decf38) at ./malloc/malloc.c:3476
#9  0x00007b660fb8e084 in server_tmpdir (cfg_dir=<optimized out>) at
include/wine/server_tmpdir.h:139

which is:
free( root_dir );


test@fb6a24900fd6:/$ gdb --args /usr/lib/wine/wine64 winecfg.exe
GNU gdb (Debian 16.3-1) 16.3
...
(gdb) r
Starting program: /usr/lib/wine/wine64 winecfg.exe
warning: Error disabling address space randomization: Operation not permitted
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
process 8727 is executing new program: /usr/lib/wine/wine64
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
free(): invalid pointer

Program received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
warning: 44	./nptl/pthread_kill.c: No such file or directory
(gdb) bt
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1  0x00007b660fcaf9ff in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
#2  0x00007b660fc5acc2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007b660fc434ac in __GI_abort () at ./stdlib/abort.c:73
#4  0x00007b660fc44291 in __libc_message_impl (fmt=fmt@entry=0x7b660fdc632d "%s\n") at ../sysdeps/posix/libc_fatal.c:134
#5  0x00007b660fcb9465 in malloc_printerr (str=str@entry=0x7b660fdc4100 "free(): invalid pointer") at ./malloc/malloc.c:5829
#6  0x00007b660fcbe3dc in _int_free_check (av=0x7b660fe02ac0 <main_arena>, p=0x7ffcf2decf28, size=<optimized out>) at ./malloc/malloc.c:4560
#7  _int_free (av=0x7b660fe02ac0 <main_arena>, p=0x7ffcf2decf28, have_lock=0) at ./malloc/malloc.c:4692
#8  __GI___libc_free (mem=0x7ffcf2decf38) at ./malloc/malloc.c:3476
#9  0x00007b660fb8e084 in server_tmpdir (cfg_dir=<optimized out>) at include/wine/server_tmpdir.h:139
#10 init_server_dir (dev=107, ino=690014) at dlls/ntdll/unix/server.c:1259
#11 setup_config_dir () at dlls/ntdll/unix/server.c:1299
#12 server_connect () at dlls/ntdll/unix/server.c:1359
#13 server_init_process () at dlls/ntdll/unix/server.c:1572
#14 0x00007b660fb7eb77 in start_main_thread () at dlls/ntdll/unix/loader.c:1861
#15 __wine_main (argc=2, argv=0x7ffcf2deb2d8) at dlls/ntdll/unix/loader.c:2189
#16 0x0000596f1d775273 in ?? ()
#17 0x00007b660fc44ca8 in __libc_start_call_main (main=main@entry=0x596f1d775180, argc=argc@entry=2, argv=argv@entry=0x7ffcf2deb2d8)
    at ../sysdeps/nptl/libc_start_call_main.h:58
#18 0x00007b660fc44d65 in __libc_start_main_impl (main=0x596f1d775180, argc=2, argv=0x7ffcf2deb2d8, init=<optimized out>, fini=<optimized out>,
    rtld_fini=<optimized out>, stack_end=0x7ffcf2deb2c8) at ../csu/libc-start.c:360
#19 0x0000596f1d775531 in _start ()


Reply to: