kern/152781: [patch] decode semget(2) flags in kdump(1)
Anton Yuzhaninov
citrin at citrin.ru
Thu Dec 2 15:30:15 UTC 2010
>Number: 152781
>Category: kern
>Synopsis: [patch] decode semget(2) flags in kdump(1)
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Dec 02 15:30:14 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Anton Yuzhaninov
>Release: FreeBSD 9.0-CURRENT i386
>Organization:
Openstat.ru
>Environment:
System: FreeBSD citrin.office.vega.ru 9.0-CURRENT FreeBSD 9.0-CURRENT #2 r215543M: Mon Nov 22 19:38:30 MSK 2010 root at citrin.office.vega.ru:/usr/obj/usr/src/sys/NK i386
>Description:
kdump(1) decode falgs in syscalls aguments, but decode not all semget(2) flags.
>How-To-Repeat:
1. Run code
semget(IPC_PRIVATE, 3, IPC_CREAT | IPC_EXCL | SEM_R | SEM_A);
semget(IPC_PRIVATE, 3, SEM_R | SEM_A);
under ktrace(1)
2.
> kdump -n | fgrep semget
87823 a.out CALL semget(0,0x3,0x780)
87823 a.out RET semget 0x60000
87823 a.out CALL semget(0,0x3,0x180)
87823 a.out RET semget 0x30001
kdump -n show 2 semget(2) syscall with differend flags, all right.
> kdump | fgrep semget
87823 a.out CALL semget(0,0x3,SEM_R|SEM_A)
87823 a.out RET semget 393216/0x60000
87823 a.out CALL semget(0,0x3,SEM_R|SEM_A)
87823 a.out RET semget 196609/0x30001
Whitout -n same flags shown - it is a bug.
Whith attached path correct flags shown:
> kdump | fgrep semget
87823 a.out CALL semget(0,0x3,IPC_CREAT|IPC_EXCL|SEM_R|SEM_A)
87823 a.out RET semget 393216/0x60000
87823 a.out CALL semget(0,0x3,SEM_R|SEM_A)
87823 a.out RET semget 196609/0x30001
>Fix:
--- mksubr.patch begins here ---
Index: usr.bin/kdump/mksubr
===================================================================
--- usr.bin/kdump/mksubr (revision 216121)
+++ usr.bin/kdump/mksubr (working copy)
@@ -254,6 +254,8 @@
void
semgetname (int flag) {
int or = 0;
+ if_print_or(flag, IPC_CREAT, or);
+ if_print_or(flag, IPC_EXCL, or);
if_print_or(flag, SEM_R, or);
if_print_or(flag, SEM_A, or);
if_print_or(flag, (SEM_R>>3), or);
--- mksubr.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list