From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28840 invoked by alias); 12 Jun 2009 10:51:05 -0000 Received: (qmail 28784 invoked by uid 48); 12 Jun 2009 10:51:05 -0000 Date: Fri, 12 Jun 2009 10:51:00 -0000 From: "kirill at shutemov dot name" To: gdb-prs@sourceware.org Message-ID: <20090612105104.10267.kirill@shutemov.name> Reply-To: sourceware-bugzilla@sourceware.org Subject: [Bug gdb/10267] New: ERESTART_RESTARTBLOCK and function calling X-Bugzilla-Reason: CC Mailing-List: contact gdb-prs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-prs-owner@sourceware.org X-SW-Source: 2009-q2/txt/msg00162.txt.bz2 I've got bug in handling ERESTART_RESTARTBLOCK. Kernel version is 2.6.28. Steps to reproduce: 1. Attach to process while it's in a syscall which use ERESTART_RESTARTBLOCK on interrupt. The easiest way is to attach to process which is in nanosleep(). 2. Run a syscall in context. 3. Continue the process. Results: Syscall(nanosleep) return error code 516(ERESTART_RESTARTBLOCK). It's kernel's internal error code and should never appear at userspace. It seems ARM-related since I can't reproduce it on x86. I'm not sure if it's kernel or gdb bug. Any ideas? Example: $ cat test.c #include #include #include int main() { struct timespec ts; int ret; ts.tv_sec = 100; ts.tv_nsec = 0; errno = 0; ret = nanosleep(&ts, NULL); printf("ret: %d, errno: %d\n", ret, errno); return 0; } $ gcc test.c $ ./a.out & $ gdb -p "$(pidof a.out)" -ex 'call getuid()' -ex 'c' -ex 'quit' GNU gdb (GDB) 6.8.50.20090417-debian Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "arm-linux-gnueabi". For bug reporting instructions, please see: . Attaching to process 6136 Reading symbols from /root/a.out...(no debugging symbols found)...done. Reading symbols from /lib/libc.so.6...Reading symbols from /usr/lib/debug/lib/libc-2.5.so...(no debugging symbols found)...done. (no debugging symbols found)...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux.so.3...Reading symbols from /usr/lib/debug/lib/ld-2.5.so...(no debugging symbols found)...done. (no debugging symbols found)...done. Loaded symbols for /lib/ld-linux.so.3 0x400bf97c in nanosleep () from /lib/libc.so.6 0x400bf97c : mov r7, r12 $1 = 0 Continuing. ret: -1, errno: 516 Program exited normally. [1] + Done ./a.out -- Summary: ERESTART_RESTARTBLOCK and function calling Product: gdb Version: 6.8 Status: UNCONFIRMED Severity: normal Priority: P2 Component: gdb AssignedTo: unassigned at sourceware dot org ReportedBy: kirill at shutemov dot name CC: gdb-prs at sourceware dot org GCC build triplet: arm-linux-gnueabi GCC host triplet: arm-linux-gnueabi GCC target triplet: arm-linux-gnueabi http://sourceware.org/bugzilla/show_bug.cgi?id=10267 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is.