Looking at the traceback that John Clemens just posted -- it looks
pretty obviously like another variation of the same class of deadlock
that I described before:
- BeaconTimeout() ran from a timer, and calls into MlmeHandler()
- MlmeHandler() runs the table-based state machine
- The state machine calls MlmeJoinReqAction()
- Right at the top of the function, MlmeJoinReqAction() does
del_timer_sync(&pAd->MlmeAux.BeaconTimer);
- But we're running from the BecaonTimer callback already
and voila, we have another "wait for timer to finish from within timer
callback" deadlock.
Looking at the rt61 driver source, I really feel it was a mistake to
merge this into the Ubuntu kernel in the first place. I realize that
there are probably some people who are using the rt61 driver without
lock ups, but at this point I don't think feisty should ship with rt61
enabled by default.
I think the reason this bug is having a more severe impact now is that
all kernels are built with CONFIG_SMP now, so del_timer_sync() is never
converted to del_timer(). So another possible fix would be to enable
the code in rtmp.h that does:
#undef del_timer_sync
#define del_timer_sync(x) del_timer(x)
that would probably convert this easily-triggered deadlock into much
rarer strange crashes on SMP systems. (Although I know that almost
every modern system is dual-core at least)
--
[rt61] Lockups running Feisty on x86-64
https://bugs.launchpad.net/bugs/90243
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.
--
ubuntu-bugs mailing list
[EMAIL PROTECTED]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs