There are all kinds of ways that your bug could be somewhere else,
other than where the processor finds an illegal instruction that
generates an exception that yields your panic.

There are a number of strategies for dealing with this that are quite
a lot easier than single-stepping with a debugger or adding lots of
printfs or NSLogs.

Try bisecting your code's history.  If you're not using revision
control, then hopefully you at least keep regular backups.

Try cutting down your existing codebase into a minimal test case.
Perhaps the bug will go away at some point.  Add back to your build
the source you just removed.  Does you bug reappear?  If so then
remove some other code until you have the very smallest amount of
source that you possibly can.

If the bug is not readily reproducible, find some way to stabilize it,
say by feeding it input files or network data that reliably stimulates
the crash.

Add assertions to your source.  Even after you fix the bug, keep the
assertions in your source as they are likely to catch other bugs
later:

   assert() is the Documentation that Keeps On Testing
   http://www.warplife.com/tips/code/quality/test/assertion/

In my personal experience, asserting the validity to subroutine
parameters yields the most productive use of my time.  If that doesn't
find your bug, assert that the return results of subroutine are valid.
If that still doesn't find your bug, assert that class invariants are
valid _outside_ of the "payload" code of any C++ member function or
Objective-C method.  A class invariant is some property of a class
which always holds true, with the possible exception that the
invariant may be temporarily broken within the body of subroutine.

Not all classes have sensible invariants.  If you find that many of
yours do not, perhaps it would help to refactor your classes so that
they do.

Enable guard malloc in Xcode's settings.

Use valgrind: http://www.valgrind.org/

Have a read of the Design for Testability section of John Lakos'
most-excellent "Large Scale C++ Software Design" - even if you don't
use C++, his section on Design for Testability will still apply for
your code.

Refactor your sourcebase so as to enable what he denotes as
"Levelization", and that I denote as "Lakos Levelization".  Many
coders practice unit testing; Lakos Levelization combines unit testing
and refactoring.  The source for a levelized program is quite a lot
easier to understand than the source for one which is not levelized.

If all else fails, mail me off-list and I'll fix it for you for a
reasonable consulting fee.

This Spam Has Been Brought To You By:

Mike Crawford
Michael David Crawford, Consulting Software Engineer
mdcrawf...@gmail.com
http://www.warplife.com/mdc/

   Available for Software Development in the Portland, Oregon Metropolitan
Area.


On Wed, Feb 4, 2015 at 5:28 PM, Alex Zavatone <z...@mac.com> wrote:
> Hard to tell without the code that surrounds it.
>
> On Feb 4, 2015, at 8:00 PM, Graham Cox wrote:
>
>> Anyone seen this? My fault, or...?
>>
>> OS Version:            Mac OS X 10.10.2 (14C109)
>> Report Version:        11
>> Anonymous UUID:        41C0442D-1002-83C7-8C29-1DCC8E683B2F
>>
>> Sleep/Wake UUID:       5DE82D59-D0D8-4695-A86E-23F6ABBFAEAB
>>
>> Time Awake Since Boot: 300000 seconds
>> Time Since Wake:       6200 seconds
>>
>> Crashed Thread:        7  Dispatch queue: 
>> com.apple.networking.connection.0x7fa940613300
>>
>> Exception Type:        EXC_GUARD
>> Exception Codes:       0x40000002000000fe, 0x00007fa94044b9e0
>>
>>
>> Thread 7 Crashed:: Dispatch queue: 
>> com.apple.networking.connection.0x7fa940613300
>> 0   libsystem_kernel.dylib            0x00007fff83900c1a dup + 10
>> 1   libsystem_network.dylib           0x00007fff86cbb3d5 
>> __tcp_connection_get_socket_block_invoke + 60
>> 2   libdispatch.dylib                 0x00007fff896f1c13 
>> _dispatch_client_callout + 8
>> 3   libdispatch.dylib                 0x00007fff896f2e5e 
>> _dispatch_barrier_sync_f_invoke + 57
>> 4   libsystem_network.dylib           0x00007fff86cbb336 
>> tcp_connection_get_socket + 135
>> 5   com.apple.CFNetwork               0x00007fff8658e018 
>> SocketStream::_onqueue_completeTCPConnection0(dispatch_data_s*) + 160
>> 6   com.apple.CFNetwork               0x00007fff8658e786 
>> ___ZN12SocketStream30_onqueue_completeTCPConnectionEv_block_invoke_2 + 129
>> 7   libdispatch.dylib                 0x00007fff896f6323 
>> _dispatch_call_block_and_release + 12
>> 8   libdispatch.dylib                 0x00007fff896f1c13 
>> _dispatch_client_callout + 8
>> 9   libdispatch.dylib                 0x00007fff896f5365 
>> _dispatch_queue_drain + 1100
>> 10  libdispatch.dylib                 0x00007fff896f6ecc 
>> _dispatch_queue_invoke + 202
>> 11  libdispatch.dylib                 0x00007fff896f46b7 
>> _dispatch_root_queue_drain + 463
>> 12  libdispatch.dylib                 0x00007fff89702fe4 
>> _dispatch_worker_thread3 + 91
>> 13  libsystem_pthread.dylib           0x00007fff86028637 _pthread_wqthread + 
>> 729
>> 14  libsystem_pthread.dylib           0x00007fff8602640d start_wqthread + 13
>>
>>
>> --Graham
>>
>>
>>
>> _______________________________________________
>>
>> 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/zav%40mac.com
>>
>> This email sent to z...@mac.com
>
>
> _______________________________________________
>
> 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/mdcrawford%40gmail.com
>
> This email sent to mdcrawf...@gmail.com
_______________________________________________

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