5.4-p1 crash

Philippe PEGON Philippe.Pegon at crc.u-strasbg.fr
Mon Jun 20 18:12:52 GMT 2005


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
> mitch at kuoi.asui.uidaho.edu
> _______________________________________________
> freebsd-stable at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to "freebsd-stable-unsubscribe at freebsd.org"

-- 
Philippe PEGON


More information about the freebsd-stable mailing list