Re: Xcode interferes with signal handler (was: Sending SIGUSR1 to a process)

2024-01-30 Thread Jens Miltner via Cocoa-dev
Xcode intercepts signals in the process being debugged (for good reason).
You can ignore specific signals in Xcode (i.e. pass them through to the process 
being debugged) by breaking into the debugger, then enter in the Xcode console 
part (example for SIGUSR1):

process handle SIGUSR1 -s false
process handle SIGUSR1 -p true

HTH,
-jens


> Von: Gabriel Zachmann 
> Betreff: Xcode interferes with signal handler (was: Sending SIGUSR1 to a 
> process)
> Datum: 30. Januar 2024 um 20:31:45 MEZ
> An: "cocoa-dev@lists.apple.com" 
> 
> 
> I am setting up a signal handler in my app like this:
> 
>   void *e = signal( SIGUSR1, signal_handler );
>   if ( e == SIG_ERR )
>  ...
> 
> It works (i can 'kill -30 '), BUT ONLY, if I run my app outside of Xcode.
> 
> When I launch it from Xcode, and I send a SIGUSR1 to my app, it always breaks 
> at mach_msg2_trap.
> Obviously, this is a bit tedious for developing, since now I always have to 
> go through Product / Archive / Distribute ...
> 
> Any ideas, how I can prevent this from happening?
> 
> And it's unclear to me what's going on. Can Xcode really prevent signal(3) 
> from installing a signal handler?
> Or does a kill on the command line deliver the signal to several processes, 
> one of them, maybe, an ancillary process from Xcode?
> 
> 
> Best regards, Gabriel
> 
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Xcode interferes with signal handler

2024-01-30 Thread Pascal Bourguignon via Cocoa-dev

Le 30/01/2024 à 20:31, Gabriel Zachmann via Cocoa-dev a écrit :

I am setting up a signal handler in my app like this:

void *e = signal( SIGUSR1, signal_handler );
if ( e == SIG_ERR )
   ...

It works (i can 'kill -30 '), BUT ONLY, if I run my app outside of Xcode.

When I launch it from Xcode, and I send a SIGUSR1 to my app, it always breaks 
at mach_msg2_trap.
Obviously, this is a bit tedious for developing, since now I always have to go 
through Product / Archive / Distribute ...

Any ideas, how I can prevent this from happening?

And it's unclear to me what's going on. Can Xcode really prevent signal(3) from 
installing a signal handler?
Or does a kill on the command line deliver the signal to several processes, one 
of them, maybe, an ancillary process from Xcode?



There must be a command to forward the signals.

With gdb, you did:

handle SIGUSR1 nostop pass

If Xcode still uses lldb, then it should be something like:

process handle SIGUSR1 --stop false --pass true

or with the GUI, assuming some version:

In Xcode, you can configure the signal handling behavior using the 
"Scheme" settings. Here's how you can do it:


1. Open your project in Xcode.
2. Select the target you want to configure the signal handling for.
3. Go to "Product" in the menu bar, then select "Scheme" and click on 
"Edit Scheme..."

4. In the left sidebar of the "Run" section, select "Diagnostics".
5. Under the "Signal Handling" section, you can add or remove signals 
based on your requirements.
6. To add a signal, click the "+" button and enter the name of the 
signal (e.g., "SIGTERM").
7. By default, the signal will be set to stop the program. To make the 
program handle the signal, uncheck the "Stop" checkbox next to the signal.

8. Click "Close" to save the changes.


From memory, I've not used it recently.
--
__Pascal Bourguignon__

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Xcode interferes with signal handler (was: Sending SIGUSR1 to a process)

2024-01-30 Thread Gabriel Zachmann via Cocoa-dev
I am setting up a signal handler in my app like this:

   void *e = signal( SIGUSR1, signal_handler );
   if ( e == SIG_ERR )
  ...

It works (i can 'kill -30 '), BUT ONLY, if I run my app outside of Xcode.

When I launch it from Xcode, and I send a SIGUSR1 to my app, it always breaks 
at mach_msg2_trap.
Obviously, this is a bit tedious for developing, since now I always have to go 
through Product / Archive / Distribute ...

Any ideas, how I can prevent this from happening?

And it's unclear to me what's going on. Can Xcode really prevent signal(3) from 
installing a signal handler?
Or does a kill on the command line deliver the signal to several processes, one 
of them, maybe, an ancillary process from Xcode?


Best regards, Gabriel





smime.p7s
Description: S/MIME cryptographic signature
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com