https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=200617
Bug ID: 200617 Summary: exec silently fails if text_size > maxtsiz Product: Base System Version: 11.0-CURRENT Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: freebsd-bugs@FreeBSD.org Reporter: ema...@freebsd.org I tried to run a debug build of Chrome: feynman% ./chrome zsh: abort ./chrome There's no log message on the console or in /var/log/messages. LLDB is no help: feynman% lldb ./chrome Current executable set to './chrome' (x86_64). (lldb) run Process 25332 launching failed to fetch ps_strings: No such process Process 25332 stopped (lldb) error: initial process state wasn't stopped: exited GDB is no help: feynman% gdb79 ./chrome GNU gdb (GDB) 7.9 [GDB v7.9 for FreeBSD] Copyright (C) 2015 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-portbld-freebsd10.1". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./chrome...(no debugging symbols found)...done. (gdb) run Starting program: /tank/emaste/src/ports/www/chromium/chrome During startup program terminated with signal SIGABRT, Aborted. (gdb) If one knows what to look for dtrace is helpful: dtrace: description 'fbt:kernel:exec_elf64_imgact:return ' matched 1 probe CPU ID FUNCTION:NAME 4 13890 exec_elf64_imgact:return error=12 That's ENOMEM. From imgact_elf.c: if (data_size > lim_cur(imgp->proc, RLIMIT_DATA) || text_size > maxtsiz || total_size > lim_cur(imgp->proc, RLIMIT_VMEM) || racct_set(imgp->proc, RACCT_DATA, data_size) != 0 || racct_set(imgp->proc, RACCT_VMEM, total_size) != 0) { PROC_UNLOCK(imgp->proc); return (ENOMEM); } This case should produce some sort of user-facing log message (likely from kern_execve, not imgact_elf). /* * Loop through the list of image activators, calling each one. * An activator returns -1 if there is no match, 0 on success, * and an error otherwise. */ for (i = 0; error == -1 && execsw[i]; ++i) { if (execsw[i]->ex_imgact == NULL || execsw[i]->ex_imgact == img_first) { continue; } error = (*execsw[i]->ex_imgact)(imgp); } if (error) { if (error == -1) { if (textset == 0) VOP_UNSET_TEXT(imgp->vp); error = ENOEXEC; } goto exec_fail_dealloc; } -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"