[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