Mitch Parks wrote:
On Sun, 19 Jun 2005, Doug White wrote:

On Fri, 17 Jun 2005, Mitch Parks wrote:

Below are details regarding another crash on a Dell 2600 SMP (HTT and USB disabled). It has been 9 days since the last crash. I didn't have the serial
console in place for this last crash, but it is now.


As noted, the ttwakeup() panic is a known bug. The best thing we have for
a fix is this patch:

http://people.freebsd.org/~mlaier/tty.t_pgrp.diff

Please give it a try and report back if you have any more panics (or
don't :-) ).


Thanks! This patch appears to be for 5.3, but I manually applied the chunk of the patch that didn't apply cleanly and the countdown is on.

I'll report back in 10 days unless something bad happens before then.

Below is the patch chunk #10 that I actually applied rather than the one given. If I've done something bad here by removing the PGRP_LOCK please let me know.

I'm not a kernel developper, but if you remove

PGRP_LOCK(tp->t_pgrp);

and the PGRP_UNLOCK(tp->t_pgrp) in the if condition (removed by the orginal patch)

there is maybe another "PGRP_UNLOCK(tp->t_pgrp);" to remove if the if condition doesn't match, line 2528 in the original 5.4-p1 tty.c ?


....
Hunk #6 succeeded at 1154 (offset -51 lines).
Hunk #7 succeeded at 1215 (offset -6 lines).
Hunk #8 succeeded at 1203 (offset -51 lines).
Hunk #9 succeeded at 1946 (offset -5 lines).
Hunk #10 failed at 2562.
Hunk #11 succeeded at 2847 (offset -212 lines).
1 out of 11 hunks failed--saving rejects to tty.c.rej


@@ -2495,19 +2511,21 @@
         * On return following a ttyprintf(), we set tp->t_rocount to 0 so
         * that pending input will be retyped on BS.
         */
+       sx_slock(&proctree_lock);
        if (tp->t_session == NULL) {
+               sx_sunlock(&proctree_lock);
                ttyprintf(tp, "not a controlling terminal\n");
                tp->t_rocount = 0;
                return;
        }
        if (tp->t_pgrp == NULL) {
+               sx_sunlock(&proctree_lock);
                ttyprintf(tp, "no foreground process group\n");
                tp->t_rocount = 0;
                return;
        }
-       PGRP_LOCK(tp->t_pgrp);
-       if ((p = LIST_FIRST(&tp->t_pgrp->pg_members)) == 0) {
-               PGRP_UNLOCK(tp->t_pgrp);
+       if ((p = LIST_FIRST(&tp->t_pgrp->pg_members)) == NULL) {
+               sx_sunlock(&proctree_lock);
                ttyprintf(tp, "empty foreground process group\n");
                tp->t_rocount = 0;
                return;

Or the complete patch:
http://kuoi.asui.uidaho.edu/~mitch/crash/tty_5.4.patch

Mitch Parks
[EMAIL PROTECTED]
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

--
Philippe PEGON
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to