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