From owner-freebsd-bugs@FreeBSD.ORG Sat Jan 21 20:30:05 2006 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 83ADA16A41F for ; Sat, 21 Jan 2006 20:30:05 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id AA80943D46 for ; Sat, 21 Jan 2006 20:30:04 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k0LKU4mA038441 for ; Sat, 21 Jan 2006 20:30:04 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k0LKU41a038440; Sat, 21 Jan 2006 20:30:04 GMT (envelope-from gnats) Resent-Date: Sat, 21 Jan 2006 20:30:04 GMT Resent-Message-Id: <200601212030.k0LKU41a038440@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Tanaka Akira Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3A3D116A41F for ; Sat, 21 Jan 2006 20:26:42 +0000 (GMT) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [216.136.204.117]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0022143D45 for ; Sat, 21 Jan 2006 20:26:41 +0000 (GMT) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.13.1/8.13.1) with ESMTP id k0LKQfwG097827 for ; Sat, 21 Jan 2006 20:26:41 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id k0LKQfk1097826; Sat, 21 Jan 2006 20:26:41 GMT (envelope-from nobody) Message-Id: <200601212026.k0LKQfk1097826@www.freebsd.org> Date: Sat, 21 Jan 2006 20:26:41 GMT From: Tanaka Akira To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-2.3 Cc: Subject: misc/92110: setcontext restore the carry flag X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2006 20:30:05 -0000 >Number: 92110 >Category: misc >Synopsis: setcontext restore the carry flag >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Jan 21 20:30:03 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Tanaka Akira >Release: FreeBSD 5.4 >Organization: AIST >Environment: FreeBSD freebsd54.vmw 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Sun May 8 10:21:06 UTC 2005 root@harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 >Description: On Pentium, getcontext saves EFLAGS and setcontext restores it. When CF is set in EFLAGS, setcontext treats it as an system call error. >How-To-Repeat: % cat t.c #include #include #include ucontext_t c; int first; volatile int carry_set; int main() { first = 1; carry_set = ~0; carry_set += 1; if (getcontext(&c) != 0) { perror("getcontext"); exit(1); } printf("first:%d\n", first); if (first == 0) exit(0); first = 0; if (setcontext(&c) != 0) { perror("setcontext"); exit(1); } printf("setcontext returns\n"); exit(1); } % gcc -march=pentium4 t.c % ./a.out first:1 setcontext: Unknown error: 0 If "carry_set += 1" is changed to "carry_set -= 1", it works fine: % ./a.out first:1 first:0 >Fix: >Release-Note: >Audit-Trail: >Unformatted: