[launchd-changes] [23307] trunk/launchd/src/libvproc.c

source_changes at macosforge.org source_changes at macosforge.org
Thu Jul 12 13:05:48 PDT 2007


Revision: 23307
          http://trac.macosforge.org/projects/launchd/changeset/23307
Author:   zarzycki at apple.com
Date:     2007-07-12 13:05:47 -0700 (Thu, 12 Jul 2007)

Log Message:
-----------
<rdar://problem/5328938> 9A491: syslogd crashed 12 times in _vprocmgr_log_drain

Modified Paths:
--------------
    trunk/launchd/src/libvproc.c

Modified: trunk/launchd/src/libvproc.c
===================================================================
--- trunk/launchd/src/libvproc.c	2007-07-11 23:16:02 UTC (rev 23306)
+++ trunk/launchd/src/libvproc.c	2007-07-12 20:05:47 UTC (rev 23307)
@@ -395,7 +395,7 @@
 vproc_err_t
 _vprocmgr_log_drain(vproc_t vp __attribute__((unused)), pthread_mutex_t *mutex, _vprocmgr_log_drain_callback_t func)
 {
-	mach_msg_type_number_t outdata_cnt;
+	mach_msg_type_number_t outdata_cnt, tmp_cnt;
 	vm_offset_t outdata = 0;
 	struct logmsg_s *lm;
 
@@ -407,17 +407,22 @@
 		return _vprocmgr_log_drain;
 	}
 
+	tmp_cnt = outdata_cnt;
+
 	if (mutex) {
 		pthread_mutex_lock(mutex);
 	}
 
-	for (lm = (struct logmsg_s *)outdata; lm->obj_sz; lm = ((void *)lm + lm->obj_sz)) {
+	for (lm = (struct logmsg_s *)outdata; tmp_cnt > 0; lm = ((void *)lm + lm->obj_sz)) {
 		lm->from_name += (size_t)lm;
 		lm->about_name += (size_t)lm;
 		lm->msg += (size_t)lm;
 		lm->session_name += (size_t)lm;
 
-		func(&lm->when, lm->from_pid, lm->about_pid, lm->sender_uid, lm->sender_gid, lm->pri, lm->from_name, lm->about_name, lm->session_name, lm->msg);
+		func(&lm->when, lm->from_pid, lm->about_pid, lm->sender_uid, lm->sender_gid, lm->pri,
+				lm->from_name, lm->about_name, lm->session_name, lm->msg);
+
+		tmp_cnt -= lm->obj_sz;
 	}
 
 	if (mutex) {

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070712/f84d7f8e/attachment.html


More information about the launchd-changes mailing list