Subject: Re: bug#8472: 24.0.50; weird emacs bugs causing data lossage

From: [email-masked]
Date: Mon, 11 Apr 2011 11:25:23 +0200

Eli Zaretskii <[email-masked]> writes:

>> From: [email-masked]
>
>  you-did-not-set--mail-host-address--so-i'm-tickling-you

Thanks

>
>> Date: Sun, 10 Apr 2011 21:39:55 +0200
>> Cc: 
>> 
>> Emacs ask if I really want to edit the buffer and I say
>> no. Then Emacs redisplay seems to hang.
>> 
>> This happened several times. Most times I had to kill emacs and loose
>> my work. This time I tried more debugging. Lately I run Emacs in a
>> debugger. Weirdly gdb refused to break itho a prompt. ctrl z and fg
>> woke up gdb.
>
> That might mean that Emacs was stuck in a system call.  But the fact
> that it responded to emacsclient eliminates this possibility, I think.

I was unclear. I only tried emacsclient after I had get gdb working
again.

I got it working by suspending gdb and resuming it again. and sending
signals to Emacs (I was a bit furious so this part is a bit hazy)

> I would try delivering a fatal signal to Emacs ("kill -TERM", for
> example) from the shell prompt.  Detaching the debugger under which
> you ran Emacs and attaching another instance of GDB is another thing
> to try.

see above.

>> it occured to me that maybe Emacs wasnt totaly hung maybe just
>> redisplay.
>
> I don't see how this can be true.  If redisplay infloops, it will
> never return, and the rest of Emacs will never get to do anything,
> including the calls to `select' that you saw in strace.

Ok. So the hang happens somewhere else. The symptom is that nothing
happens on the display but emacsclient can communicate.

Also, whenever I manage to break into the process with gdb the backtrace
shows Emacs is in the select call. With strace I see that Emacs is not
stuck there but loops. So I figure theres some poll loop running closely
around the select. Or something. Maybe its my constant changing of
network interfaces that invalidates sockets or something.

>> So I tested emacs client and I could recover data like
>> this:
>> 
>>  emacsclient -e "(let ((b (set-buffer \"journal.org\")) (text  (buffer-string))) (set-text-properties 0 (length text) nil text)text)"
>
> Now I don't understand how come you couldn't break into it from GDB.

See above. I only tried this after getting gdb to work again.

>> There are two weird things here:
>> - the file was truncated. Maybe this is due to a combination of
>>   narrowing and automatic save.
>
> Can't happen, auto-save forces temporary widening of the buffer (as
> you'd expect ;-).

Well. The funny thing is that the truncated content of the file is the
exact same content I see in the narrowed buffer on screen.

Org narrows in another window and buffer somehow. Could that interfere?
I dont know the term for what it does yet. "indirect buffer" maybe?

>> - redisplay hangs in minibuffer input. I have no idea about why this
>>   happens.
>
> Doesn't seem to be the case, see above.

Ok.

> Best thing to try next time is somehow to stop Emacs, and then use the
> procedure described in etc/DEBUG under "If the symptom of the bug is
> that Emacs fails to respond".

Ok thanks.

-- 
Joakim Verona