Chet Ramey wrote:
> Joe Peterson wrote:
> 
>>         Well, without a hacked kernel, you'll probably not hit
>>         *this* manifestation of the issue, but what I did was:
>>
>>         - run a text processing program (like "cat" or "tr")
>>         - hit ctrl-S
>>         - enter lots of text that will then produce lots of output
>>         - hold down ctrl-C until the error is produced
>>
>> Fix:
>>         Should interrupts be trapped during call to tcsetattr()?
> 
> I don't think so.  Readline already blocks interrupts when it calls
> tcsetattr, and bash handles that call returning -1/EINTR appropriately.

Hi,

Yep, I see the code that returns -1 in jobs.c:

---------
if (tcgetattr (tty, &shell_tty_info) < 0)
{
#if 0
  /* Only print an error message if we're really interactive at
     this time. */
  if (interactive)
    sys_error ("[%ld: %d] tcgetattr", (long)getpid (), shell_level);
#endif
  return -1;
}
---------

And that sys_error message is, I believe, the exact error I am seeing.
What I am wondering is how did I manage to invoke this by using ^C?  Did
I hit some small window when readline was not running and when the
program that would normally catch the kill signal was not listening
(i.e. bash itself somehow caught it)?  I did not think this was
possible.  Just wondering if this is something that should not happen.

                                        Thanks, Joe


Reply via email to