On Apr 17, 2013, at 5:44 PM, Charles Srstka <cocoa...@charlessoft.com> wrote:
> On Apr 17, 2013, at 7:06 PM, Greg Parker <gpar...@apple.com> wrote:
>> 
>> dispatch assumes you are using the semaphore in a lock-like pattern, where 
>> all waiters are expected to signal when they are done with their work. In 
>> that pattern, destroying a semaphore whose value is less than its original 
>> value indicates a bug somewhere (because somebody should have signaled the 
>> semaphore but has not yet done so). _dispatch_semaphore_dispose() is 
>> enforcing that assumption and deliberately halting your process if it fails.
> 
> Then why not use something like an assertion or an exception which could 
> actually let the user / developer know why you crashed, instead of just 
> EXC_BAD_INSTRUCTION?

There should be a message in the crash log.

    if (dsema->dsema_value < dsema->dsema_orig) {
        DISPATCH_CLIENT_CRASH("Semaphore/group object deallocated while in 
use");
    }


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler



_______________________________________________

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

Reply via email to