speakup-r lockup analysis so far
John Covici
covici at ccs.covici.com
Wed Aug 23 07:45:08 EDT 2017
So, what is the difference if you don't start with an empty line --
what is the call flow then?
On Wed, 23 Aug 2017 07:21:29 -0400,
Okash Khawaja wrote:
>
> Hi,
>
> This is my analysis of speakup-r empty line lockup so far.
>
> The call chain that leads is:
>
> cursor on an empty line --> user hits speakup-r --> (everthing from here
> on will be in interrupt context) --> keyboard_notifier_call(code == 4
> == KBD_KEYSYM) --> speakup_key() --> do_spkup() --> spkup_handler(value
> ==47==index of read_all_doc) --> read_all_doc --> kbd_fakekey2()
>
> Now, inside kbd_fakekey2(), speakup_fake_down_arrow() causes the lockup.
> And inside speakup_fake_down_arrow(), input_sync() causes the lockup.
>
> I'm pretty sure keyboard_notifier_call is not invoked again, after
> input_sync() when the lockup happens. So either lockup happens inside
> input_sync() or some callback that is invoked as a result of
> input_sync's execution.
>
> From tests that John ran, we can say that speakup_fake_down_arrow itself
> is correct. It's only when it is called as a result of above call chain
> that the lockup happens. Also worth noting is the fact that above
> sequence is all inside interrupt context.
>
> Any ideas or suggestions about line of investigation will be helpful.
> Until then, I'll continue to explore this.
>
> Thanks,
> Okash
--
Your life is like a penny. You're going to lose it. The question is:
How do
you spend it?
John Covici
covici at ccs.covici.com
More information about the Speakup
mailing list