cvs commit: src/lib Makefile src/lib/libpthread Makefile README dummy.c
Joe Talbott
josepht at cstone.net
Fri May 4 12:00:16 PDT 2007
On Thu, May 03, 2007 at 04:10:55PM -0700, Matthew Dillon wrote:
>
> :I've built the pkgsrc 2007Q1 thunderbird but I can't reproduce a crash on
> :startup. If its dot dirs are available, thunderbird seems to work with
> :libc_r, vanilla libthread_xu and libthread_xu + prio patch. However, if you
> :remove the dot dirs and start thunderbird with the symlink pointing to
> :libthread_xu, it gets stuck waiting for two locks (presumably two threads do
> :the waiting, ktrace is not lwp aware so doesn't help much). Kill it, and next
> :time it starts up just fine. Given that this doesn't happen using libc_r,
> :chances are the locking code in libthread_xu could use some debugging. This
> :would be fun to do (especially if it turns out the bug is in the mozilla
> :code :P), but I can't volunteer.
> :
> :That said, I think the two patches I posted can safely go in. Please commit
> :while they still apply :)
> :
> :Thanks,
> :Aggelos
>
> Committed!
>
> I can't test the lock stuff any time soon, but if ktrace does not
> already have a field for the LWP id and someone would like to add
> it to the kernel and support to the userland utility, submit a patch
> any time!
Here's my attempt.
Joe
Index: kern/kern_ktrace.c
===================================================================
RCS file: /home/dcvs/src/sys/kern/kern_ktrace.c,v
retrieving revision 1.28
diff -u -r1.28 kern_ktrace.c
--- kern/kern_ktrace.c 12 Aug 2006 00:26:20 -0000 1.28
+++ kern/kern_ktrace.c 4 May 2007 18:28:10 -0000
@@ -66,12 +66,14 @@
{
struct ktr_header *kth;
struct proc *p = curproc; /* XXX */
+ struct lwp *lp = curthread->td_lwp;
MALLOC(kth, struct ktr_header *, sizeof (struct ktr_header),
M_KTRACE, M_WAITOK);
kth->ktr_type = type;
microtime(&kth->ktr_time);
kth->ktr_pid = p->p_pid;
+ kth->ktr_tid = lp->lwp_tid;
bcopy(p->p_comm, kth->ktr_comm, MAXCOMLEN + 1);
return (kth);
}
Index: sys/ktrace.h
===================================================================
RCS file: /home/dcvs/src/sys/sys/ktrace.h,v
retrieving revision 1.8
diff -u -r1.8 ktrace.h
--- sys/ktrace.h 21 May 2006 03:43:47 -0000 1.8
+++ sys/ktrace.h 4 May 2007 18:56:49 -0000
@@ -80,6 +80,7 @@
int ktr_len; /* length of buf */
short ktr_type; /* trace record type */
pid_t ktr_pid; /* process id */
+ lwpid_t ktr_tid; /* lwp id */
char ktr_comm[MAXCOMLEN+1]; /* command name */
struct timeval ktr_time; /* timestamp */
caddr_t ktr_buf;
Index: kdump.c
===================================================================
RCS file: /home/dcvs/src/usr.bin/kdump/kdump.c,v
retrieving revision 1.7
diff -u -r1.7 kdump.c
--- kdump.c 20 Jul 2006 22:57:47 -0000 1.7
+++ kdump.c 4 May 2007 18:29:53 -0000
@@ -209,7 +209,7 @@
type = unknown;
}
- col = printf("%6d %-8.*s ", kth->ktr_pid, MAXCOMLEN, kth->ktr_comm);
+ col = printf("%6d %6d %-8.*s ", kth->ktr_pid, kth->ktr_tid, MAXCOMLEN, kth->ktr_comm);
if (timestamp) {
if (timestamp == 2) {
temp = kth->ktr_time;
More information about the Submit
mailing list