[64bit] emacs is unable to call subprocesses if display-time-mode is set
Ken Brown
kbrown@cornell.edu
Wed Apr 3 13:49:00 GMT 2013
On 4/3/2013 7:41 AM, Corinna Vinschen wrote:
> On Apr 2 18:57, Ken Brown wrote:
>> On 4/2/2013 3:00 PM, Corinna Vinschen wrote:
>>> On Apr 2 14:04, Ken Brown wrote:
>>>> On 4/1/2013 12:04 PM, Ken Brown wrote:
>>>>> On 4/1/2013 8:48 AM, Ken Brown wrote:
>>>>>> On 3/30/2013 7:17 AM, Corinna Vinschen wrote:
>>>>>>> On Mar 30 06:54, Ken Brown wrote:
>>>>>>>> When you set display-time-mode in emacs, the mode line near the
>>>>>>>> bottom of the screen shows the current time. The code that does
>>>>>>>> this involves setting itimers.
>>>>>>>
>>>>>>> Can you extrace a simple testcase from the itimer code? That would help
>>>>>>> a lot to track down this case. I'm a bit scared of emacs...
>>>>>>
>>>>>> I was wrong about itimers. It turns out that emacs uses two different
>>>>>> kinds of timers. One type is defined in C code and uses itimers, and
>>>>>> the other type is defined in Lisp code. It's the latter that's involved
>>>>>> here. So it won't be easy to make a test case in plain C.
>>>>>>
>>>>>> I'm also finding that the order in which I do things affects whether or
>>>>>> not the bug shows up. For example, if I start a shell within emacs
>>>>>> before setting display-time-mode, the bug disappears. I'll keep looking
>>>>>> at the emacs code, but maybe you'll be able to see something in the
>>>>>> strace output.
>>>>>
>>>>> Sorry for yet another email, but I just wanted to let you know that you
>>>>> shouldn't put much time into this unless something jumps out at you.
>>>>>
>>>>> I just looked at this with gdb again and noticed that the function
>>>>> `Fcall_process' [which is the C function that implements the lisp
>>>>> function `call-process'] is being called with an argument nargs =
>>>>> 4305072226, which is 0x1009A3062; the value should be 4. nargs is of
>>>>> type ptrdiff_t. I'll try to figure out why this is happening.
>>>>
>>>> It turns out that gdb is giving me bogus information. I don't know
>>>> if that's caused by a gdb bug, a Cygwin bug, an emacs bug, or
>>>> something else.
>>>
>>> GDB sometimes can't show correct information if you didn't step into the
>>> function deep enoughs since the debug information isn't complete. A
>>> single step to the next line most of the time fixes that.
>>>
>>>> If you wouldn't mind taking a look at the original bug when you get
>>>> a chance, maybe you can spot something using strace or whatever
>>>> other tools you have. (BTW, I just retested with cygwin-1.7.18-15,
>>>> and the bug is still there.) If you want to confirm the gdb issue,
>>>> install emacs-debuginfo and run gdb with a breakpoint at
>>>> Fcall_process before carrying out my recipe.
>>>
>>> I can try tomorrow, but a testcase is ultimately more helpful. The
>>> strace doesn't contain a lot of info, except that the crash occurs in
>>> the function cmalloc, which allocates space on the cygheap. It's not
>>> clear what function has been called at this point, though.
>>
>> How did you figure out that the crash occurs in cmalloc? I tried
>> addr2line, but it gave me no information:
>>
>> $ addr2line -e /bin/cygwin1.dll 1800429F4
>> ??:?
>
> Are you sure the stackdump is from the same version of the Cygwin
> DLL you're running now?
I didn't get a stackdump. I was relying on the following line from the
strace output:
Process 4928, exception c0000005 at 00000001800429F4
I just reproduced that today, with the same address, so there's no
question of the DLL version.
Ken
More information about the Cygwin-developers
mailing list