From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by sourceware.org (Postfix) with ESMTPS id D20F63858D32 for ; Sun, 15 Oct 2023 18:14:31 +0000 (GMT) ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D20F63858D32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697393673; cv=none; b=ed6aPnIzsb9UMRHGldjHyS8nYUTyUONESiPym8Tqwp3r46/svsoV5uk7me96WztyZElZD7oFc4FjtVIC/J2nnFrz9zzG/OZjzXbIRqQRlHuDbHrbtxe9eFK0vzePD62V1xAWWhnr0hpYz/IR1WHhW4msblHpR/57GPOyzkAyBpM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697393673; c=relaxed/simple; bh=GGtM6Rkn24nwWbGLclvqgoMbRVYfdFGLePBkd8P+POk=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=r2myTVCd9gptfRHH+Vc8Q6BkYM2Jrtr8QXWiQYSWD7vE5Hy3PeOL+BtdpoFN32zzoUfaoajjbElHwZeJHVUbEYlfbWoNar9ET3WQOmNxpFn9DKol0BP8yi8FtfOPnBQLVfGv/HsKjPdu/ee2Qaf8WSG08uhHC/ue0qwJr5AKjXA= ARC-Authentication-Results: i=1; server2.sourceware.org DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D20F63858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1697393670; x=1697998470; i=anlauf@gmx.de; bh=GGtM6Rkn24nwWbGLclvqgoMbRVYfdFGLePBkd8P+POk=; h=X-UI-Sender-Class:Date:Subject:To:References:From:In-Reply-To; b=q5j28pnDuUkqXmHB1ytp7b5DsrcV2JIDz2hztgrZ/VLsyAIeErfNsqK/8U9MlKZdc2XF/EKjruN J90J1qtm6MuqSpM226+nsaHVpRq1yBoBQ9yBUyfhBXzQonnu7fTfnppN4LBEHKEPq/VTCnfJYmuZK kCO7aDSIF31hm4xCNboFjluM5npCX1pvMTjFQi13yzhydZuKEU7ni+d3nQzQkmrXwYLC2vjostK2G /rmFrOKu71ots5ldoAFtUpmZ6yKk2+Ayt0Urv/dOg7i13zT7d5bApqsDAnJ7OlFgxq96EDb44Q/bf RdFIPNOwkq9rWbQeS8pFQQN12N1aReM2pWBA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.178.29] ([79.251.10.186]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MmDIo-1rIalJ3l8C-00iAY7; Sun, 15 Oct 2023 20:14:29 +0200 Message-ID: <0aa83e43-7f05-494e-9ef3-01e5b86300c9@gmx.de> Date: Sun, 15 Oct 2023 20:14:29 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Segfaults in SIGINT signal handler To: GFortran mailing list , stanislav.maslovski@gmail.com References: Content-Language: en-US From: Harald Anlauf In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Y0UlRVWbnBCkVQp4BJp5tkGfVbF/wdXFCBz/9FmVDAwYOEPxVdW PMMOWx3T181o7sWOUa8QYxu/tCmyS2CQ7p36+wSlLgfYT2Yc9/FZi0NDayNOui1BqQiOmWb ep7rxWGYgsxK45a88NwbumyXo/DqdYw2sedDGMDNTh/VmFi0OU231FygFY6iHrRSQ7OpYvX y5DPT4UaTeRdC2gzLNWAA== UI-OutboundReport: notjunk:1;M01:P0:ryu3pTjPZ+o=;RCJuO3vjEW1EjspYu6T23XIhn4H vHIMAQLeltJXlyxR/4NBUSWy5jm7nWVgtGe+Bk6PHzUa4r6ggfR8dMIrPCvKWElXodvxj/XY3 VeIK0fTymiynN8EGq0F6Gs1U0ptENObNXCN2HelB92HgRhOwsrF951o6sgKz9joahElVKBlP1 j+jIcyhKXX4+kQX8mHmeu+1SWd3AQmFnspGmT6LHctyH5Nt56rB1nlSyElQzkZQBRdse0CmuH S6+lqD1YrE5KVPs4mHUSm/NeRU756YpdIAH7rJpgXqV8bCzTB/xXB9i2u2mQ0AO2ie3wvaEtZ 1jwti0pKaa+XDVwNJBw87mYT3yrVnwVxDP23fuNDUxlEKRWNnUDYIW4zI0QVPwaGPNxj+tNfO cHzMV00Bd87EdE2rzxDEtpOLD7Krcvvf5a3rR3jTCksT5WFFwBo6gAoUsnOsB6ZuSbPxjF4S9 e4FLycWLnD6aIU2XrZvFAsNNtqzX9Edtr0gjOoAd85fjnULSNk4F/MuXOYp3dAMf6bPBAjx30 4qfuhZscjCA7gjwPllPIeCefqqiAQG9XkEbIBBcyDI5J7gSwzv/SmOv5muePwIgQJpoKo0rMh rzIDUuyPfvTBt82ZN1p/R3YqsPK0/edn5atYwzMzpsgRKuMtFJ5WOu8piGGz3EXlnyZyyH83w iveSyQ39w2UQEjypJVK7cjQcgHiI76rgBN7RJje64IE0g1GFhlng3cIvx7LOwk7zgeo3cIcek pCwA1u7BNTdJ751gRfqcmT49hAJ1gT2lvlwr+m3CCYHASo3W75i0cvFnavJcooUeEy9bmQR1+ pzdBVt1JgP+2mAzjtWQ21ad74AkkD1MuP5hPK7g6uZwZh+NdyFR/r0jHBH4M/fAhCMKBlooAy 7nIe9mtcSFSmRCgAULdfFyQZfZxRi/9GPzTti93nTqK12GGDOFH+I7Dx8i0SIoVGL5OaxKCQj DrhmXetNIg6W4gbQQRxL9Ry/IJw= X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi Stanislav, Am 15.10.23 um 15:18 schrieb Stanislav Maslovski: > Hi, > > First of all, many thanks to everyone involved in developing and > maintaining gfortran! > > I have been trying to use gfortran's function signal() to add a SIGINT > signal handler to my program. Gfortran's documentation for this function > says that, when the signal handler is called, it is given an argument of > integer type. However, when I try to access this argument in the > signal handler, my program segfaults. > > Here are two examples: > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D this code segfaults = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > program test_signal > implicit none > integer, parameter :: SIGINT =3D 2, SIG_ERR =3D -1 > logical :: sig_received =3D .false. > common /signal/ sig_received > external sig_handler > if (signal(SIGINT, sig_handler) /=3D SIG_ERR) then > print *, "Signal handler installed" > else > print *, "Error in signal()" > endif > do while (.true.) > print *, "Waiting for signal..." > do while (.not. sig_received) > continue > enddo > print *, "Signal received!" > sig_received =3D .false. > enddo > end program > > subroutine sig_handler(s) > implicit none > integer, parameter :: SIGINT =3D 2 > integer, intent(in) :: s > logical sig_received > common /signal/ sig_received > if (s =3D=3D SIGINT) sig_received =3D .true. > end subroutine > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > > $ gfortran test_signal.f90 > $ ./a.out > Signal handler installed > Waiting for signal... > ^C > Program received signal SIGSEGV: Segmentation fault - invalid memory > reference. > > Backtrace for this error: > #0 0x7f9c312218c2 in ??? > #1 0x7f9c31220a55 in ??? > #2 0x7f9c3105afcf in ??? > at ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:= 0 > #3 0x562929f153bc in ??? > #4 0x7f9c3105afcf in ??? > at ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0 > #5 0x562929f152f4 in ??? > #6 0x562929f153a8 in ??? > #7 0x7f9c310461c9 in __libc_start_call_main > at ../sysdeps/nptl/libc_start_call_main.h:58 > #8 0x7f9c31046284 in __libc_start_main_impl > at ../csu/libc-start.c:360 > #9 0x562929f150c0 in ??? > #10 0xffffffffffffffff in ??? > zsh: segmentation fault ./a.out > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D this code does not segfault =3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > program test_signal > implicit none > integer, parameter :: SIGINT =3D 2, SIG_ERR =3D -1 > logical :: sig_received =3D .false. > common /signal/ sig_received > external sig_handler > if (signal(SIGINT, sig_handler) /=3D SIG_ERR) then > print *, "Signal handler installed" > else > print *, "Error in signal()" > endif > do while (.true.) > print *, "Waiting for signal..." > do while (.not. sig_received) > continue > enddo > print *, "Signal received!" > sig_received =3D .false. > enddo > end program > > subroutine sig_handler(s) > implicit none > integer, intent(in) :: s > logical sig_received > common /signal/ sig_received > sig_received =3D .true. > end subroutine > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > > What am I doing wrong? the man page for signal states that the interface of the signal handler is= : void (*sighandler_t)(int); which means that the signal number is passed by value, not by reference. If you replace integer, intent(in) :: s by integer, value :: s you'll get the intended behavior. > With best regards, >