Hello Jiri Palecek,
I could reproduce this issue also on amd64.

It looks intentional and seems like a security consideration
to make no crash dumps and is caused by this line:

    kdesu.cpp:83:          prctl(PR_SET_DUMPABLE, 0);

However, you may temporarily add SUID to gdb, then gdb
will run as root and, as far as I see, kdesu still as user.
And the desired breakpoint can be reached.
Attached file demonstrates this.

Kind regards,
Bernhard
# Buster i386 qemu VM 2019-02-07

apt update
apt dist-upgrade

apt install dpkg-dev devscripts xserver-xorg sddm plasma-desktop gdb 
kde-cli-tools kde-cli-tools-dbgsym

reboot



mkdir source/kde-cli-tools/orig -p
cd    source/kde-cli-tools/orig
apt source kde-cli-tools
cd


mkdir source/libc6/orig -p
cd    source/libc6/orig
apt source libc6
cd


export DISPLAY=:0
gdb -q \
    -ex 'set width 0' \
    -ex 'set pagination off' \
    -ex 'directory 
/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu' \
    -ex 'directory /home/benutzer/source/libc6/orig/glibc-2.28/sysdeps' \
    -ex 'b main' \
    -ex 'b SuProcess::exec' \
    --args /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls


###########



benutzer@debian:~$ gdb -q \
>     -ex 'set width 0' \
>     -ex 'set pagination off' \
>     -ex 'directory 
> /home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu' \
>     -ex 'directory /home/benutzer/source/libc6/orig/glibc-2.28/sysdeps' \
>     -ex 'b main' \
>     -ex 'b SuProcess::exec' \
>     --args /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls
Reading symbols from /usr/lib/i386-linux-gnu/libexec/kf5/kdesu...Reading 
symbols from 
/usr/lib/debug/.build-id/d8/59440907cb9b64a346797293b75d544beba51c.debug...done.
done.
Source directories searched: 
/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu:$cdir:$cwd
Source directories searched: 
/home/benutzer/source/libc6/orig/glibc-2.28/sysdeps:/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu:$cdir:$cwd
Breakpoint 1 at 0x4a70: file ./kdesu/kdesu.cpp, line 80.
Breakpoint 2 at 0x4540
(gdb) run
Starting program: /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".

Breakpoint 1, main (argc=2, argv=0xbffff654) at ./kdesu/kdesu.cpp:80
80      {
(gdb) next
83          prctl(PR_SET_DUMPABLE, 0);
(gdb) step
prctl () at ../sysdeps/unix/syscall-template.S:78
78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
(gdb) display/i $pc
1: x/i $pc
=> 0xb67d0e50 <prctl>:  push   %edi
(gdb) stepi
0xb67d0e51      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e51 <prctl+1>:        push   %esi
(gdb) 
0xb67d0e52      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e52 <prctl+2>:        push   %ebx
(gdb) 
0xb67d0e53      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e53 <prctl+3>:        mov    0x20(%esp),%edi
(gdb) 
0xb67d0e57      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e57 <prctl+7>:        mov    0x1c(%esp),%esi
(gdb) 
0xb67d0e5b      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e5b <prctl+11>:       mov    0x18(%esp),%edx
(gdb) 
0xb67d0e5f      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e5f <prctl+15>:       mov    0x14(%esp),%ecx
(gdb) 
0xb67d0e63      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e63 <prctl+19>:       mov    0x10(%esp),%ebx
(gdb) 
0xb67d0e67      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e67 <prctl+23>:       mov    $0xac,%eax
(gdb) 
0xb67d0e6c      78      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
1: x/i $pc
=> 0xb67d0e6c <prctl+28>:       call   *%gs:0x10
(gdb) 
0xb7fd4d68 in __kernel_vsyscall ()
1: x/i $pc
=> 0xb7fd4d68 <__kernel_vsyscall>:      push   %ecx
(gdb) 
0xb7fd4d69 in __kernel_vsyscall ()
1: x/i $pc
=> 0xb7fd4d69 <__kernel_vsyscall+1>:    push   %edx
(gdb) 
0xb7fd4d6a in __kernel_vsyscall ()
1: x/i $pc
=> 0xb7fd4d6a <__kernel_vsyscall+2>:    push   %ebp
(gdb) 
0xb7fd4d6b in __kernel_vsyscall ()
1: x/i $pc
=> 0xb7fd4d6b <__kernel_vsyscall+3>:    mov    %esp,%ebp
(gdb) 
0xb7fd4d6d in __kernel_vsyscall ()
1: x/i $pc
=> 0xb7fd4d6d <__kernel_vsyscall+5>:    sysenter 
(gdb) bt
#0  0xb7fd4d6d in __kernel_vsyscall ()
#1  0xb67d0e73 in prctl () at ../sysdeps/unix/syscall-template.S:78
#2  0x00404aab in main (argc=<optimized out>, argv=0xbffff654) at 
./kdesu/kdesu.cpp:83
(gdb) stepi

[1]+  Angehalten              gdb -q -ex 'set width 0' -ex 'set pagination off' 
-ex 'directory 
/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu' -ex 
'directory /home/benutzer/source/libc6/orig/glibc-2.28/sysdeps' -ex 'b main' 
-ex 'b SuProcess::exec' --args /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls



root@debian:~# ps aux | grep -E "gdb|kdesu"
benutzer 14748  1.1  2.7  94280 83116 pts/1    T    11:42   0:00 gdb -q -ex set 
width 0 -ex set pagination off -ex directory 
/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu -ex 
directory /home/benutzer/source/libc6/orig/glibc-2.28/sysdeps -ex b main -ex b 
SuProcess::exec --args /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls
benutzer 14750  0.0  0.4  70972 12852 pts/1    t    11:42   0:00 
/usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls



benutzer@debian:~$ fg
gdb -q -ex 'set width 0' -ex 'set pagination off' -ex 'directory 
/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu' -ex 
'directory /home/benutzer/source/libc6/orig/glibc-2.28/sysdeps' -ex 'b main' 
-ex 'b SuProcess::exec' --args /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls
Cannot find user-level thread for LWP 14750: generic error
(gdb) bt
Selected thread is running.
(gdb) kill
Kill the program being debugged? (y or n) y
[Inferior 1 (process 14750) killed]
(gdb) q




##############




gdb -q \
    -ex 'set width 0' \
    -ex 'set pagination off' \
    -ex 'directory 
/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu' \
    -ex 'directory /home/benutzer/source/libc6/orig/glibc-2.28/sysdeps' \
    -ex 'b SuProcess::exec' \
    -ex 'run' \
    --args /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls




benutzer@debian:~$ ls -lisah /usr/lib/i386-linux-gnu/libexec/kf5/kdesu 
/usr/bin/gdb
275448 7,3M -rwxr-xr-x 1 root root 7,3M Nov 27 17:08 /usr/bin/gdb
279342  52K -rwxr-xr-x 1 root root  51K Jan 24 13:25 
/usr/lib/i386-linux-gnu/libexec/kf5/kdesu

root@debian:~# chmod +s /usr/bin/gdb

benutzer@debian:~$ ls -lisah /usr/lib/i386-linux-gnu/libexec/kf5/kdesu 
/usr/bin/gdb
275448 7,3M -rwsr-sr-x 1 root root 7,3M Nov 27 17:08 /usr/bin/gdb
279342  52K -rwxr-xr-x 1 root root  51K Jan 24 13:25 
/usr/lib/i386-linux-gnu/libexec/kf5/kdesu

benutzer@debian:~$ gdb -q \
>     -ex 'set width 0' \
>     -ex 'set pagination off' \
>     -ex 'directory 
> /home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu' \
>     -ex 'directory /home/benutzer/source/libc6/orig/glibc-2.28/sysdeps' \
>     -ex 'b SuProcess::exec' \
>     -ex 'run' \
>     --args /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls
Reading symbols from /usr/lib/i386-linux-gnu/libexec/kf5/kdesu...Reading 
symbols from 
/usr/lib/debug/.build-id/d8/59440907cb9b64a346797293b75d544beba51c.debug...done.
done.
Source directories searched: 
/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu:$cdir:$cwd
Source directories searched: 
/home/benutzer/source/libc6/orig/glibc-2.28/sysdeps:/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu:$cdir:$cwd
Breakpoint 1 at 0x4540
Starting program: /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[New Thread 0xb3311b40 (LWP 14782)]
org.kde.kdesu: Daemon not safe (not sgid), not using it.

[Detaching after fork from child process 14783]

Thread 1 "kdesu" hit Breakpoint 1, 0xb7ddea00 in KDESu::SuProcess::exec(char 
const*, int)@plt () from /usr/lib/i386-linux-gnu/libKF5Su.so.5
(gdb) bt
#0  0xb7ddea00 in KDESu::SuProcess::exec(char const*, int)@plt () from 
/usr/lib/i386-linux-gnu/libKF5Su.so.5
#1  0xb7de8aac in KDESu::SuProcess::checkNeedPassword() () from 
/usr/lib/i386-linux-gnu/libKF5Su.so.5
#2  0x00405fff in startApp (p=...) at ./kdesu/kdesu.cpp:378
#3  main (argc=<optimized out>, argv=<optimized out>) at ./kdesu/kdesu.cpp:156




root@debian:~# ps aux | grep -E "gdb|kdesu"
root     14776  6.3  2.7  93452 81992 pts/1    S+   11:52   0:01 gdb -q -ex set 
width 0 -ex set pagination off -ex directory 
/home/benutzer/source/kde-cli-tools/orig/kde-cli-tools-5.14.5/kdesu -ex 
directory /home/benutzer/source/libc6/orig/glibc-2.28/sysdeps -ex b 
SuProcess::exec -ex run --args /usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls
benutzer 14778  0.1  0.6  89392 21164 pts/1    tl   11:52   0:00 
/usr/lib/i386-linux-gnu/libexec/kf5/kdesu ls

Reply via email to