[64bit] emacs is unable to call subprocesses if display-time-mode is set
Ken Brown
kbrown@cornell.edu
Tue Apr 2 18:04:00 GMT 2013
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. But I inserted a printf command into Fcall_process, and it is
indeed passed the value of 4 for `nargs', not the crazy value that gdb
reported. I'll see if I can come up with a simple test case for this
gdb problem, but it may or may not be related to the bug I reported.
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.
Thanks.
Ken
More information about the Cygwin-developers
mailing list