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