Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: SIGIO, xemacs random crashes on SMP system



On Wednesday, at 12:07, Eric Haszlakiewicz wrote:
| The program looks about right to me.  It crashes on my machine too, which is
| running -current as of August 30th.
| 
| I tried it on Linux (redhat ES 4), and it seems to work fine there.

Thanks for the test. I have more info, using gdb. I could manage to set a
breakpoint in the signal handler, just when it is called while the process is
doing a memmove in the descending direction (memmove.S:114).

Once the signal is handled and the process goes back to the memmove job, here
is what I get:
(gdb) where
#0  memmove () at memcpy.S:114
#1  0x08048b0b in main () at iotest.c:74
(gdb) l
109     .Lback_aligned:
110             shrl    $2,%ecx
111             subl    $4,%esi
112             subl    $4,%edi
113             std
114             rep
115             movsl
116             cld
117             jmp     .Ldone
118
(gdb) info reg
eax            0x0      0
ecx            0x43ff   17407
edx            0xbfbfe5ac       -1077942868
ebx            0x8049e58        134520408
esp            0xbfbfe518       0xbfbfe518
ebp            0xbfbfe558       0xbfbfe558
esi            0xbb911ff8       -1148117000
edi            0xbb911ffc       -1148116996
eip            0x8048c49        0x8048c49 <memmove+89>
eflags         0x296    [ PF AF SF IF ]
cs             0x17     23
ss             0x1f     31
ds             0x1f     31
es             0x1f     31
fs             0x0      0
gs             0x0      0

Clearly, the direction flag is not set while the cpu is doing the 'rep movsl',
just after the 'std'. Then, of course, the program fails to pass the test and
asserts(). 

There's something wrong somewhere, isn't it?

-- 
Anthony


Home | Main Index | Thread Index | Old Index