Re: [RFA/testsuite] attach.exp: Add small delay in busy loop...

Michael Snyder
2003-11-20T20:20:04Z

Joel Brobecker wrote:
> Hello,
>
> On Tue, Nov 18, 2003 at 04:26:07PM -0800, Michael Snyder wrote:
>
>>>2003-11-18 J. Brobecker <brobecker@gnat.com>
>>>
>>> * gdb.base/attach.c: Add small delay in busy loop.
>>> * gdb.base/attach.exp: Make some associated adjustments.
>>>
>>>OK to apply?
>>
>>Seems to work on Linux. I'd sure like to see that backtrace test,
>>though, to confirm that we are able to build a meaningful machine
>>state after we attach.
>
>
> Here is a new version of the patch, with the backtraces in. I do have
> two FAILs though. The first FAIL comes from the following test:
>
> gdb_test "backtrace" \
> ".*in nanosleep ().*in small_delay ().*in main ().*" \
> "backtrace after attach2"
>
> The logs show:
>
> backtrace
> #0 0x400eb3b5 in ?? () from /lib/libc.so.6
> #1 0x08048412 in small_delay () at ./gdb.base/attach.c:18
> #2 0x08048435 in main () at ./gdb.base/attach.c:29
> (gdb) FAIL: gdb.base/attach.exp: backtrace after attach2
>
> So the problem is that GDB is unable to find the function name for
> frame $0. I think this comes from these warnings while performing
> the attach command:
>
> attach 3671
> Attaching to process 3671
> Reading symbols from /[...]/testsuite/gdb.base/attach...done.
> --> Symbols already loaded for /lib/libm.so.6
> --> Symbols already loaded for /lib/libc.so.6
> Symbols already loaded for /lib/ld-linux.so.2
> 0x400eb3b5 in ?? () from /lib/libc.so.6^M
> (gdb) PASS: gdb.base/attach.exp: attach2
>
> The second FAIL is identical.

Probably should explicitly clear the symbol tables between
one attach and the next.

> There is another thing that I think needs mentioning. I noticed I am
> the first one to introduce the use of nanosleep(). I think it's pretty
> portable, but I am having doubts. Does anybody know if it's not available
> on any platform. How about cygwin for instance?

Yeah, I remember having issues with it when I tried to write
thread tests. I don't remember where it was missing -- maybe
Solaris? I think your concern is valid -- nanosleep is not
guaranteed to be available everywhere.