This appears to be caused by pam_mount.c::pam_sm_close_session(). When there are no volume list items the code that explicitly gets the user name is skipped over:
if (Config.volume_list.items == 0) { w4rn("No volumes to umount\n"); goto out; } which results in Config.user not being set (its default value is NULL) which causes the assert() in modify_pm_count. out: envpath_init(Config.path); if (modify_pm_count(&Config, Config.user, "-1") > 0) ---- $ sudo sed -i 's/\(pam_mount.so\)/\1 debug/' /etc/pam.d/common-session-noninteractive $ sudo LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0 gdb -x /home/tj/gdb-sudo.cmd --args sudo echo TEST sudo: /etc/sudoers.d/timestamp is mode 0644, but should be 0440 pam_mount(pam_mount.c:553): pam_mount 2.10: entering session stage pam_mount(misc.c:38): Session open: (ruid/rgid=1000/1000, e=0/1000) pam_mount(pam_mount.c:614): no volumes to mount command: 'pmvarrun' '-u' 'root' '-o' '1' pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=1000/1000, e=0/1000) pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/1000, e=0/1000) pmvarrun(pmvarrun.c:252): parsed count value 98 pam_mount(pam_mount.c:440): pmvarrun says login count is 99 pam_mount(pam_mount.c:645): done opening session (ret=0) GNU gdb (Ubuntu/Linaro 7.4-2012.02-0ubuntu2) 7.4-2012.02 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". For bug reporting instructions, please see: <http://bugs.launchpad.net/gdb-linaro/>... Reading symbols from /usr/bin/sudo...Reading symbols from /usr/lib/debug/usr/bin/sudo...done. done. Function "pam_begin_session" not defined. Breakpoint 1 (pam_begin_session) pending. Function "pam_end_session" not defined. Breakpoint 2 (pam_end_session) pending. Function "pam_sm_close_session" not defined. Breakpoint 3 (pam_sm_close_session) pending. Function "modify_pm_count" not defined. Breakpoint 4 (modify_pm_count) pending. (gdb) run Starting program: /usr/bin/sudo echo TEST [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". sudo: /etc/sudoers.d/timestamp is mode 0644, but should be 0440 pam_mount(pam_mount.c:553): pam_mount 2.10: entering session stage pam_mount(misc.c:38): Session open: (ruid/rgid=0/0, e=0/0) pam_mount(pam_mount.c:614): no volumes to mount command: 'pmvarrun' '-u' 'root' '-o' '1' pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=0/0, e=0/0) pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/0, e=0/0) pmvarrun(pmvarrun.c:252): parsed count value 99 pam_mount(pam_mount.c:440): pmvarrun says login count is 100 pam_mount(pam_mount.c:645): done opening session (ret=0) TEST Breakpoint 2, pam_end_session (pw=0x20fa938, auth=0x7fc7cbf4a620) at /build/buildd/sudo-1.8.3p1/plugins/sudoers/auth/pam.c:243 243 { (gdb) n 246 if (pamh != NULL) { (gdb) n 252 (void) pam_set_item(pamh, PAM_USER, pw->pw_name); (gdb) n 253 (void) pam_close_session(pamh, PAM_SILENT); (gdb) n Breakpoint 3, 0x00007fc7ca85f740 in pam_sm_close_session () from /lib/x86_64-linux-gnu/security/pam_permit.so (gdb) c Continuing. Breakpoint 3, 0x00007fc7ca85f740 in pam_sm_close_session () from /lib/x86_64-linux-gnu/security/pam_permit.so (gdb) c Continuing. Breakpoint 3, 0x00007fc7c5eca2e0 in pam_sm_close_session () from /lib/x86_64-linux-gnu/security/pam_umask.so (gdb) c Continuing. Breakpoint 3, 0x00007fc7cb0bf9f0 in pam_sm_close_session () from /lib/x86_64-linux-gnu/security/pam_unix.so (gdb) c Continuing. Breakpoint 3, pam_sm_close_session (pamh=0x20f1520, flags=32768, argc=0, argv=0x210ba00) at pam_mount.c:681 681 { (gdb) n 685 assert(pamh != NULL); (gdb) n 682 const char *pam_user = NULL; (gdb) n 685 assert(pamh != NULL); (gdb) n 687 ret = HX_init(); (gdb) n 688 if (ret <= 0) (gdb) n 691 w4rn("received order to close things\n"); (gdb) n 692 if (Config.volume_list.items == 0) { (gdb) n 693 w4rn("No volumes to umount\n"); (gdb) n 690 ret = PAM_SUCCESS; (gdb) n 693 w4rn("No volumes to umount\n"); (gdb) n 694 goto out; (gdb) n 717 envpath_init(Config.path); (gdb) n 718 if (modify_pm_count(&Config, Config.user, "-1") > 0) (gdb) n Breakpoint 4, modify_pm_count (user=0x0, operation=0x7fc7ca659750 "-1", config=<optimized out>) at pam_mount.c:408 408 static int modify_pm_count(struct config *config, char *user, (gdb) n 417 assert(user != NULL); (gdb) n sudo: pam_mount.c:417: modify_pm_count: Assertion `user != ((void *)0)' failed. Program received signal SIGABRT, Aborted. 0x00007fc7cc286445 in raise () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) bt full #0 0x00007fc7cc286445 in raise () from /lib/x86_64-linux-gnu/libc.so.6 No symbol table info available. #1 0x00007fc7cc289bab in abort () from /lib/x86_64-linux-gnu/libc.so.6 No symbol table info available. #2 0x00007fc7cc27f10e in ?? () from /lib/x86_64-linux-gnu/libc.so.6 No symbol table info available. #3 0x00007fc7cc27f1b2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6 No symbol table info available. #4 0x00007fc7ca653002 in modify_pm_count (user=0x0, operation=0x7fc7ca659750 "-1", config=<optimized out>) at pam_mount.c:417 fp = 0x0 vinfo = <optimized out> argv = <optimized out> proc = {p_ops = 0x100000004, p_data = 0x0, p_flags = 0, p_stdin = 0, p_stdout = 0, p_stderr = 0, p_pid = 0, p_status = 0 '\000', p_exited = false, p_terminated = false} ret = -1 use_count = <optimized out> #5 0x00007fc7ca653bd4 in pam_sm_close_session (pamh=<optimized out>, flags=<optimized out>, argc=<optimized out>, argv=<optimized out>) at pam_mount.c:718 pam_user = 0x0 ret = 0 __PRETTY_FUNCTION__ = "pam_sm_close_session" #6 0x00007fc7cbb13b45 in _pam_dispatch_aux (use_cached_chain=<optimized out>, resumed=<optimized out>, h=0x210b930, flags=<optimized out>, pamh=0x20f1520) at pam_dispatch.c:110 retval = <optimized out> cached_retval = <optimized out> action = <optimized out> depth = <optimized out> status = <optimized out> prev_level = <optimized out> stack_level = 0 impression = 1 skip_depth = 0 substates = 0x20fa3d0 #7 _pam_dispatch (pamh=0x20f1520, flags=<optimized out>, choice=5) at pam_dispatch.c:395 h = <optimized out> retval = <optimized out> use_cached_chain = <optimized out> resumed = <optimized out> ---Type <return> to continue, or q <return> to quit--- #8 0x00007fc7cbd25413 in pam_end_session (pw=<optimized out>, auth=<optimized out>) at /build/buildd/sudo-1.8.3p1/plugins/sudoers/auth/pam.c:253 status = 0 #9 0x00007fc7cbd24827 in sudo_auth_end_session (pw=0x20fa938) at /build/buildd/sudo-1.8.3p1/plugins/sudoers/auth/sudo_auth.c:315 auth = <optimized out> status = <optimized out> #10 0x00007fc7cbd2c180 in sudoers_policy_close (exit_status=<optimized out>, error_code=0) at /build/buildd/sudo-1.8.3p1/plugins/sudoers/sudoers.c:259 No locals. #11 0x0000000000409321 in policy_close (error=0, exit_status=<optimized out>, plugin=<optimized out>) at /build/buildd/sudo-1.8.3p1/src/sudo.c:1109 No locals. #12 run_command (details=<optimized out>) at /build/buildd/sudo-1.8.3p1/src/sudo.c:1081 plugin = <optimized out> cstat = {type = 2, val = 0} exitcode = 1 #13 0x00000000004038f1 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at /build/buildd/sudo-1.8.3p1/src/sudo.c:295 nargc = 2 sudo_mode = <optimized out> exitcode = 0 nargv = 0x7fff5921d3a0 settings = 0x20eda00 env_add = 0x20ed7d0 user_info = <optimized out> command_info = 0x7fc7cbf4cf60 argv_out = 0x20f0888 user_env_out = 0x20f5300 plugin = <optimized out> next = <optimized out> command_details = {uid = 0, euid = 0, gid = 0, egid = 0, umask = 18, priority = 0, timeout = 0, ngroups = 1, closefrom = 3, flags = 8325, groups = 0x20fa3b0, command = 0x20f4308 "/bin/echo", cwd = 0x0, login_class = 0x0, chroot = 0x0, selinux_role = 0x0, selinux_type = 0x0, utmp_user = 0x0, argv = 0x20f0888, envp = 0x20f5300} mask = {__val = {0 <repeats 16 times>}} ok = <optimized out> -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/927828 Title: sudo: pam_mount.c:417: modify_pm_count: Assertion `user != ((void *)0)' failed. To manage notifications about this bug go to: https://bugs.launchpad.net/sudo/+bug/927828/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs