GithubHelp home page GithubHelp logo

kstenerud / kscrash Goto Github PK

View Code? Open in Web Editor NEW
4.2K 142.0 698.0 5.18 MB

The Ultimate iOS Crash Reporter

License: MIT License

Objective-C 39.92% Objective-C++ 0.25% C 29.00% C++ 27.11% Ruby 0.12% Swift 0.42% Makefile 0.02% CMake 0.21% Java 2.80% Shell 0.01% Python 0.09% Rich Text Format 0.04%

kscrash's Introduction

Run Unit Tests CocoaPods Lint

KSCrash

The Ultimate Crash Reporter

Another crash reporter? Why?

Because while the existing crash reporters do report crashes, there's a heck of a lot more that they COULD do. Here are some key features of KSCrash:

  • On-device symbolication in a way that supports re-symbolication offline (necessary for iOS versions where many functions have been redacted).
  • Generates full Apple reports, with every field filled in.
  • 32-bit and 64-bit mode.
  • Supports all Apple devices, including Apple Watch.
  • Handles errors that can only be caught at the mach level, such as stack overflow.
  • Tracks the REAL cause of an uncaught C++ exception.
  • Handles a crash in the crash handler itself (or in the user crash handler callback).
  • Detects zombie (deallocated) object access attempts.
  • Recovers lost NSException messages in cases of zombies or memory corruption.
  • Introspects objects in registers and on the stack (C strings and Objective-C objects, including ivars).
  • Extracts information about objects referenced by an exception (such as "unrecognized selector sent to instance 0xa26d9a0")
  • Its pluggable server reporting architecture makes it easy to adapt to any API service.
  • Dumps the stack contents.
  • Diagnoses crash causes (Crash Doctor).
  • Records lots of information beyond what the Apple crash report can, in a JSON format.
  • Supports including extra data that the programmer supplies (before and during a crash).

KSCrash handles the following kinds of crashes:

  • Mach kernel exceptions
  • Fatal signals
  • C++ exceptions
  • Objective-C exceptions
  • Main thread deadlock (experimental)
  • Custom crashes (e.g. from scripting languages)

KSCrash can report to the following servers:

Here are some examples of the reports it can generate.

What's New?

Call for help!

My life has changed enough over the past few years that I can't keep up with giving KSCrash the love it needs.

I want you

I'm looking for someone to help me maintain this package, make sure issues get handled, merges are properly vetted, and code quality remains high. Please contact me personally (kstenerud at my gmail address) or comment in #313

VERY VERY VERY preliminary Android support.

And I do mean PRELIMINARY. Most stuff doesn't work, but it does compile. Look in the Android subdir if you want to play around with it.

C++ Exception Handling

That's right! Normally if your app terminates due to an uncaught C++ exception, all you get is this:

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x9750ea6a 0x974fa000 + 84586 (__pthread_kill + 10)
1   libsystem_sim_c.dylib           0x04d56578 0x4d0f000 + 292216 (abort + 137)
2   libc++abi.dylib                 0x04ed6f78 0x4ed4000 + 12152 (abort_message + 102)
3   libc++abi.dylib                 0x04ed4a20 0x4ed4000 + 2592 (_ZL17default_terminatev + 29)
4   libobjc.A.dylib                 0x013110d0 0x130b000 + 24784 (_ZL15_objc_terminatev + 109)
5   libc++abi.dylib                 0x04ed4a60 0x4ed4000 + 2656 (_ZL19safe_handler_callerPFvvE + 8)
6   libc++abi.dylib                 0x04ed4ac8 0x4ed4000 + 2760 (_ZSt9terminatev + 18)
7   libc++abi.dylib                 0x04ed5c48 0x4ed4000 + 7240 (__cxa_rethrow + 77)
8   libobjc.A.dylib                 0x01310fb8 0x130b000 + 24504 (objc_exception_rethrow + 42)
9   CoreFoundation                  0x01f2af98 0x1ef9000 + 204696 (CFRunLoopRunSpecific + 360)
...

No way to track what the exception was or where it was thrown from!

Now with KSCrash, you get the uncaught exception type, description, and where it was thrown from:

Application Specific Information:
*** Terminating app due to uncaught exception 'MyException', reason: 'Something bad happened...'

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   Crash-Tester                    0x0000ad80 0x1000 + 40320 (-[Crasher throwUncaughtCPPException] + 0)
1   Crash-Tester                    0x0000842e 0x1000 + 29742 (__32-[AppDelegate(UI) crashCommands]_block_invoke343 + 78)
2   Crash-Tester                    0x00009523 0x1000 + 34083 (-[CommandEntry executeWithViewController:] + 67)
3   Crash-Tester                    0x00009c0a 0x1000 + 35850 (-[CommandTVC tableView:didSelectRowAtIndexPath:] + 154)
4   UIKit                           0x0016f285 0xb4000 + 766597 (-[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1194)
5   UIKit                           0x0016f4ed 0xb4000 + 767213 (-[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 201)
6   Foundation                      0x00b795b3 0xb6e000 + 46515 (__NSFireDelayedPerform + 380)
7   CoreFoundation                  0x01f45376 0x1efa000 + 308086 (__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22)
8   CoreFoundation                  0x01f44e06 0x1efa000 + 306694 (__CFRunLoopDoTimer + 534)
9   CoreFoundation                  0x01f2ca82 0x1efa000 + 207490 (__CFRunLoopRun + 1810)
10  CoreFoundation                  0x01f2bf44 0x1efa000 + 204612 (CFRunLoopRunSpecific + 276)
...

Custom Crashes & Stack Traces

You can now report your own custom crashes and stack traces (think scripting languages):

- (void) reportUserException:(NSString*) name
                  reason:(NSString*) reason
              lineOfCode:(NSString*) lineOfCode
              stackTrace:(NSArray*) stackTrace
        terminateProgram:(BOOL) terminateProgram;

See KSCrash.h for details.

Unstable Features

The following features should be considered "unstable" and are disabled by default:

  • Deadlock detection

How to Build KSCrash

  1. Select the KSCrash scheme.
  2. Choose iOS Device.
  3. Select Archive from the Products menu.

When it has finished building, it will show you the framework in Finder. You can use it like you would any other framework.

How to Use KSCrash

  1. Add the framework to your project (or add the KSCrash project as a dependency)

  2. Add the following system frameworks & libraries to your project:

    • libc++.dylib (libc++.tbd in newer versions)
    • libz.dylib (libz.tbd in newer versions)
    • MessageUI.framework (iOS only)
    • SystemConfiguration.framework
  3. Add the flag "-ObjC" to Other Linker Flags in your Build Settings

  4. Add the following to your [application: didFinishLaunchingWithOptions:] method in your app delegate:

#import <KSCrash/KSCrash.h>
// Include to use the standard reporter.
#import <KSCrash/KSCrashInstallationStandard.h>
// Include to use Quincy or Hockey.
#import <KSCrash/KSCrashInstallationQuincyHockey.h>
// Include to use the email reporter.
#import <KSCrash/KSCrashInstallationEmail.h>
// Include to use Victory.
#import <KSCrash/KSCrashInstallationVictory.h>

- (BOOL)application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*) launchOptions
{
KSCrashInstallationStandard* installation = [KSCrashInstallationStandard sharedInstance];
installation.url = [NSURL URLWithString:@"http://put.your.url.here"];

// OR:

KSCrashInstallationQuincy* installation = [KSCrashInstallationQuincy sharedInstance];
installation.url = [NSURL URLWithString:@"http://put.your.url.here"];

// OR:

KSCrashInstallationHockey* installation = [KSCrashInstallationHockey sharedInstance];
installation.appIdentifier = @"PUT_YOUR_HOCKEY_APP_ID_HERE";

// OR:

KSCrashInstallationEmail* installation = [KSCrashInstallationEmail sharedInstance];
installation.recipients = @[@"[email protected]"];

// Optional (Email): Send Apple-style reports instead of JSON
[installation setReportStyle:KSCrashEmailReportStyleApple useDefaultFilenameFormat:YES]; 

// Optional: Add an alert confirmation (recommended for email installation)
[installation addConditionalAlertWithTitle:@"Crash Detected"
                                 message:@"The app crashed last time it was launched. Send a crash report?"
                               yesAnswer:@"Sure!"
                                noAnswer:@"No thanks"];

// OR:

KSCrashInstallationVictory* installation = [KSCrashInstallationVictory sharedInstance];
installation.url = [NSURL URLWithString:@"https://put.your.url.here/api/v1/crash/<application key>"];

[installation install];
    …
}

This will install the crash monitor system (which intercepts crashes and stores reports to disk). Note that there are other properties you can and probably will want to set for the various installations.

Once you're ready to send any outstanding crash reports, call the following:

[installation sendAllReportsWithCompletion:^(NSArray *filteredReports, BOOL completed, NSError *error)
{
 // Stuff to do when report sending is complete
}];

Recommended Reading

If possible, you should read the following header files to fully understand what features KSCrash has, and how to use them:

  • KSCrash.h
  • KSCrashInstallation.h
  • KSCrashInstallation(SPECIFIC TYPE).h
  • Architecture.md

Understanding the KSCrash Codebase

I've written a quick code tour here

Advanced Usage

Enabling on-device symbolication

On-device symbolication requires basic symbols to be present in the final build. To enable this, go to your app's build settings and set Strip Style to Debugging Symbols. Doing so increases your final binary size by about 5%, but you get on-device symbolication.

Enabling advanced functionality:

KSCrash has advanced functionality that can be very useful when examining crash reports in the wild. Some involve minor trade-offs, so most of them are disabled by default.

Custom User Data (userInfo in KSCrash.h)

You can store custom user data to the next crash report by setting the userInfo property in KSCrash.h.

Zombie Tracking (KSCrashMonitorTypeZombie in KSCrashMonitorType.h)

KSCrash has the ability to detect zombie instances (dangling pointers to deallocated objects). It does this by recording the address and class of any object that gets deallocated. It stores these values in a cache, keyed off the deallocated object's address. This means that the smaller you set the cache size, the greater the chance that a hash collision occurs and you lose information about a previously deallocated object.

With zombie tracking enabled, KSCrash will also detect a lost NSException and print its contents. Certain kinds of memory corruption or stack corruption crashes can cause the exception to deallocate early, further twarting efforts to debug your app, so this feature can be quite handy at times.

Trade off: Zombie tracking at the cost of adding very slight overhead to object deallocation, and having some memory reserved.

Deadlock Detection (KSCrashMonitorTypeMainThreadDeadlock in KSCrashMonitorType.h)

WARNING WARNING WARNING WARNING WARNING WARNING WARNING

This feature is UNSTABLE! It can false-positive and crash your app!

If your main thread deadlocks, your user interface will become unresponsive, and the user will have to manually shut down the app (for which there will be no crash report). With deadlock detection enabled, a watchdog timer is set up. If anything holds the main thread for longer than the watchdog timer duration, KSCrash will shut down the app and give you a stack trace showing what the main thread was doing at the time.

This is wonderful, but you must be careful: App initialization generally occurs on the main thread. If your initialization code takes longer than the watchdog timer, your app will be forcibly shut down during start up! If you enable this feature, you MUST ensure that NONE of your normally running code holds the main thread for longer than the watchdog value! At the same time, you'll want to set the timer to a low enough value that the user doesn't become impatient and shut down the app manually before the watchdog triggers!

Trade off: Deadlock detection, but you must be a lot more careful about what runs on the main thread!

Memory Introspection (introspectMemory in KSCrash.h)

When an app crashes, there are usually objects and strings in memory that are being referenced by the stack, registers, or even exception messages. When enabled, KSCrash will introspect these memory regions and store their contents in the crash report.

You can also specify a list of classes that should not be introspected by setting the doNotIntrospectClasses property in KSCrash.

Custom crash handling code (onCrash in KSCrash.h)

If you want to do some extra processing after a crash occurs (perhaps to add more contextual data to the report), you can do so.

However, you must ensure that you only use async-safe code, and above all else never call Objective-C code from that method! There are many cases where you can get away with doing so anyway, but there are certain classes of crashes where handler code that disregards this warning will cause the crash handler to crash! Note that if this happens, KSCrash will detect it and write a full report anyway, though your custom handler code may not fully run.

Trade off: Custom crash handling code, but you must be careful what you put in it!

KSCrash log redirection

This takes whatever KSCrash would have printed to the console, and writes it to a file instead. I mostly use this for debugging KSCrash itself, but it could be useful for other purposes, so I've exposed an API for it.

Examples

The workspace includes some example apps, which demonstrate common KSCrash usage. Please look at the top of AppDelegate.m in each app for a description of what it does.

License

Copyright (c) 2012 Karl Stenerud

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in the documentation of any redistributions of the template files themselves (but not in projects built using the templates).

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

kscrash's People

Contributors

alexmedearis avatar armcknight avatar bamx23 avatar conradirwin avatar diemer avatar github-actions[bot] avatar glinnik21 avatar hazat avatar ikesyo avatar javisoto avatar kattrali avatar kelp404 avatar kstenerud avatar nacho4d avatar naftaly avatar nickh-apadmi avatar nickkhg avatar s2ler avatar sergey70 avatar slottermoser avatar soffes avatar ssheldon avatar stephenzl avatar tmolitor-stud-tu avatar torarnv avatar wenjiemasc avatar xuezhulian avatar yolomao avatar zhiyuwong avatar zuikyo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kscrash's Issues

Quincy and HockeyApp support are outdated

We have received a request to support Quincy version 3 server from a customer of our app. We support Quincy and HockeyApp via KSCrash. I tested KSCrash against the Quincy 3 code as well as a trial account at HockeyApp and neither of them worked properly.

I am working on fixes.

Catch crashes in library that uses KSCrash

Hi! Basicaly it is not a issue, it is a question to experienced developer in area of catching crashes. We making our own library that uses KSCrash. And we want to process crashes that happened in our library using one algorithm and in app that embeds our library in a different way. May be we could install our own handlers? @try/@catch before calling our code is not always the case because there many threads in our library.

Undefined symbols for architecture armv7:

Just Git Clone, and build or archive. did i forget something?

Undefined symbols for architecture armv7:
"typeinfo for long long", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for unsigned short", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for unsigned long", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for long", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for int", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for unsigned char", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for long double", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for std::exception", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for double", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for float", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"__cxa_rethrow", referenced from:
CPPExceptionTerminate() in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for char
", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for short", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"__cxa_begin_catch", referenced from:
CPPExceptionTerminate() in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for char const
", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"___cxa_demangle", referenced from:
CPPExceptionTerminate() in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for unsigned long long", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"___cxa_current_exception_type", referenced from:
CPPExceptionTerminate() in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for char", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"typeinfo for unsigned int", referenced from:
GCC_except_table2 in KSCrash(KSCrashSentry_CPPException.o)
"___cxa_end_catch", referenced from:
CPPExceptionTerminate() in KSCrash(KSCrashSentry_CPPException.o)
"std::set_terminate(void (*)())", referenced from:
_kscrashsentry_installCPPExceptionHandler in KSCrash(KSCrashSentry_CPPException.o)
_kscrashsentry_uninstallCPPExceptionHandler in KSCrash(KSCrashSentry_CPPException.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Reports to multiple servers?

Is it possible for KSCrash to send reports to multiple servers, e.g email and Victory installation? For example we configured KSCrash to send crash reports via email installation, now we want reports to be sent to Victory installation as well.

Strange error while sending report to QuincyServer

I have trouble with sending reports to my hosted quincy server in virtual machine. There is my code to install KSCrash in application:didFinishLaunchingWithOptions:
id sink = [KSCrashReportSinkQuincy sinkWithURL:[NSURL URLWithString:@"http://193.168.1.6/crash-reporter/crash_v200.php"] onSuccess:^(NSString *response) {
NSLog(@"Response from quincy %@", response);
}];
BOOL installed = [KSCrash installWithCrashReportSink:sink];

if (installed) {
NSLog(@"Installed crash report");
} else {
NSLog(@"Error while installing crash report");
}

There is my code to crash my app:

  • (void)viewDidAppear:(BOOL)animated {
    NSArray *array = [NSArray array];
    NSLog(@"object %@", [array objectAtIndex:0]);

    [super viewDidAppear:animated];
    }

And this error message I get on a device:
Nov 30 17:58:56 unknown UIKitApplication:ru.flexis.arhdiary[0xf44e][3845] : terminate called throwing an exception
Nov 30 17:58:56 unknown ReportCrash[3850] : Formulating crash report for process arhdiary[3845]
Nov 30 17:58:56 unknown com.apple.launchd[1] : (UIKitApplication:ru.flexis.arhdiary[0xf44e]) Job appears to have crashed: Abort trap: 6
Nov 30 17:58:56 unknown SpringBoard[52] : Application 'arhdiary' exited abnormally with signal 6: Abort trap: 6
Nov 30 17:58:56 unknown librariand[3848] : client connection is invalid: Connection invalid
Nov 30 17:58:56 unknown ReportCrash[3850] : Saved crashreport to /var/mobile/Library/Logs/CrashReporter/arhdiary_2012-11-30-175856_iPad-Vitalij-Ruznikov.plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0

It seems like it cannot launch crash report sending. I've googled for this error message "librariand client connection is invalid: Connection invalid" but found nothing. I can open url for crash collecting in my iPad in safari browser, so quincy server is reachable. Can you help me with troubleshooting this problem, please?

extractHostName is incorrect

Method - (NSString_) extractHostName:(NSString_) potentialURL of class KSReachabilityKSCrash is incorrect.

It works only for url with pattern http:///
It cannot extract host for http://
Also this method is too complicated. It is better to relay on system methods, e.g.:

NSURL *hostURL = [NSURL URLWithString:stringHost];
return [hostURL host];

Public API for setting systemInfo

What do you think of moving context->config.systemInfoJSON to Public like it's made for userInfo?
I need to change some of values for this report section. If I could set systemInfo same way as userInfo, it would solve lots of problems.
BTW, is it safe to modify context->config at any time of application lifecycle?

If you think that it's reasonable feature, I would make a pull request for that.

Callstack is deallocated before an NSException in autorelease pool

When you have an autorelease pool and throw and catch an exception inside, the "reserved" ivar (that contains callstack) of an NSException is deallocated before the instance of NSException.

To reproduce the crash

@autoreleasepool {
    @try{
        @throw [NSException exceptionWithName:@"1" reason:@"2" userInfo:nil];
    }
    @catch (NSException *e) {
    }
}

This is how it looks in the debugger

#0  0x000b082b in handleDealloc at /Users/sidslog/projects/TestException/KSCrash/Source/KSCrash/Recording/Tools/KSZombie.m:149
#1  0x000b07a6 in -[NSObject(KSZombie) dealloc_KSZombieOrig] at /Users/sidslog/projects/TestException/KSCrash/Source/KSCrash/Recording/Tools/KSZombie.m:167
#2  0x00421f18 in -[_NSCallStackArray dealloc] ()
#3  0x0083f772 in objc_object::sidetable_release(bool) ()
#4  0x00840a63 in -[NSObject release] ()
#5  0x00b28c37 in CFRelease ()
#6  0x00b5debe in -[__NSDictionaryM dealloc] ()
#7  0x0083f772 in objc_object::sidetable_release(bool) ()
#8  0x00840a63 in -[NSObject release] ()
#9  0x00c686ec in -[NSException dealloc] ()
#10 0x0083f772 in objc_object::sidetable_release(bool) ()
#11 0x0083ee9b in objc_release ()
#12 0x0083fd32 in (anonymous namespace)::AutoreleasePoolPage::pop(void*) ()

At first it deallocates the callstack then an ivar and only after that an instance of NSException.
When handling the deallocation of an NSException in storeException, there is no "reserved" ivar. So the EXC_BAD_ACCESS happens at line

NSArray* callStack = [exception callStackReturnAddresses];

At my point of view, there is a way to handle this crash - to swizzle the "release" method of NSExcepsion instead of "dealloc". Then the chain of releasing would look like this: NSException -> "reserver" ivar -> callstack. But I haven't tested a lot(

Trouble Adding Framework

When I try to add the framework then build I get this error.

Undefined symbols for architecture armv7:
"_inflate", referenced from:
-[NSData(GZip) gunzippedWithError:] in KSCrash(NSData+GZip.o)
"_deflate", referenced from:
-[NSData(GZip) gzippedWithCompressionLevel:error:] in KSCrash(NSData+GZip.o)
"_inflateEnd", referenced from:
-[NSData(GZip) gunzippedWithError:] in KSCrash(NSData+GZip.o)
"deflateInit2", referenced from:
-[NSData(GZip) gzippedWithCompressionLevel:error:] in KSCrash(NSData+GZip.o)
"inflateInit2", referenced from:
-[NSData(GZip) gunzippedWithError:] in KSCrash(NSData+GZip.o)
"_deflateEnd", referenced from:
-[NSData(GZip) gzippedWithCompressionLevel:error:] in KSCrash(NSData+GZip.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Split KSCrash cocoapod into several subspecs

Hi. We are working on an iOS lib which should handle crashes among other useful activities and want to use KSCrash for this part. As full KSCrash is quite large it would be great if it was possible to include only limited subset of functionality. Based on your answer to this issue #43 I suggest the following cocoapods subspecs could be created:

  • KSCrash/Core
  • KSCrash/Reporting
  • KSCrash/Sending

The latter two subspecs could optionally be split even further, e.g. KSCrash/Reporting/AppleFmt for only Aplle style crash report formatting and KSCrash/Sending/eMail for sending only via e-mail.

I actually tried creating cocoapod subspec which includes only core crash recording system and apple formatter(that's the parts used by our lib). It could be seen here https://github.com/fkazak/Specs/blob/master/KSCrash/0.0.1/KSCrash.podspec
However currently all the source files are stored in the same folder what leads to the following problems:

  • for subspec creation it's necessary to list all the files required (you can see my subspec is around 3 times larger then original podspec). If they were stored in separate folders subsspecs would take only a few lines.
  • if files are added or removed subspecs should be updated manually.

I believe in case you are interested in such a feature added to your library I can do most of files moving and sample projects adjustments myself and send a pull request then.

Thanks!

__cxa_demangle crash when used with RubyMotion

Hi! Trying to integrate KSCrash with RubyMotion, when running in simulator, safe_demangle() crashes in __cxa_demangle().

Build environment:

  • XCode 5.0.2 to build KSCrash.framework as suggested on homepage
  • RubyMotion 2.19
  • app.frameworks += ['MessageUI', 'SystemConfiguration']
  • app.libs += ['/usr/lib/libz.dylib', '/usr/lib/libc++.dylib']

Stack trace is a follows:

* thread #1: tid = 0x66213, 0x04e85875 libsystem_c.dylib`malloc_error_break, queue = 'com.apple.main-thread, stop reason = breakpoint 2.1
    frame #0: 0x04e85875 libsystem_c.dylib`malloc_error_break
libsystem_c.dylib`malloc_error_break:
-> 0x4e85875:  pushl  %ebp
   0x4e85876:  movl   %esp, %ebp
   0x4e85878:  subl   $8, %esp
   0x4e8587b:  nop    
(lldb) frame select 1
frame #1: 0x04e87191 libsystem_c.dylib`realloc + 316
libsystem_c.dylib`realloc + 316:
-> 0x4e87191:  testb  $80, 602129(%ebx)
   0x4e87198:  je     0x4e87100                 ; realloc + 171
   0x4e8719e:  calll  0x4f07084                 ; symbol stub for: _simple_salloc
   0x4e871a3:  movl   %eax, %esi
(lldb) frame select 2
frame #2: 0x04ac7d44 libc++abi.dylib`__cxa_demangle + 712
libc++abi.dylib`__cxa_demangle + 712:
-> 0x4ac7d44:  movl   %eax, %edi
   0x4ac7d46:  testl  %edi, %edi
   0x4ac7d48:  je     0x4ac7daf                 ; __cxa_demangle + 819
   0x4ac7d4a:  movl   16(%ebp), %eax
(lldb) frame select 3
frame #3: 0x00029f4e Ubibase`safe_demangle + 66
Ubibase`safe_demangle + 66:
-> 0x29f4e:  cmpl   $0, -12(%ebp)
   0x29f52:  setne  %cl
   0x29f55:  movzbl %cl, %eax
   0x29f58:  addl   $36, %esp
(lldb) frame select 4
frame #4: 0x000317d4 Ubibase`kscrw_i_writeBacktraceEntry + 163
Ubibase`kscrw_i_writeBacktraceEntry + 163:
-> 0x317d4:  testb  %al, %al
   0x317d6:  cmovnel %esi, %ebx
   0x317d9:  movl   %ebx, 8(%esp)
   0x317dd:  movl   -524(%ebp), %ebx
(lldb) frame select 5
frame #5: 0x000318f1 Ubibase`kscrw_i_writeBacktrace + 154
Ubibase`kscrw_i_writeBacktrace + 154:
-> 0x318f1:  addl   $16, %esp
   0x318f4:  addl   $16, %edi
   0x318f7:  addl   $4, %ebx
   0x318fa:  decl   %esi
(lldb) frame select 6
frame #6: 0x00031f61 Ubibase`kscrw_i_writeThread + 208
Ubibase`kscrw_i_writeThread + 208:
-> 0x31f61:  movl   -1356(%ebp), %eax
   0x31f67:  testl  %eax, %eax
   0x31f69:  movl   20(%ebp), %edi
   0x31f6c:  je     0x31f94                   ; kscrw_i_writeThread + 259
(lldb) frame select 6
frame #6: 0x00031f61 Ubibase`kscrw_i_writeThread + 208
Ubibase`kscrw_i_writeThread + 208:
-> 0x31f61:  movl   -1356(%ebp), %eax
   0x31f67:  testl  %eax, %eax
   0x31f69:  movl   20(%ebp), %edi
   0x31f6c:  je     0x31f94                   ; kscrw_i_writeThread + 259
(lldb) frame select 6
frame #6: 0x00031f61 Ubibase`kscrw_i_writeThread + 208
Ubibase`kscrw_i_writeThread + 208:
-> 0x31f61:  movl   -1356(%ebp), %eax
   0x31f67:  testl  %eax, %eax
   0x31f69:  movl   20(%ebp), %edi
   0x31f6c:  je     0x31f94                   ; kscrw_i_writeThread + 259
(lldb) frame select 7
frame #7: 0x000321eb Ubibase`kscrw_i_writeAllThreads + 192
Ubibase`kscrw_i_writeAllThreads + 192:
-> 0x321eb:  incl   %esi
   0x321ec:  cmpl   -20(%ebp), %esi
   0x321ef:  jb     0x321c2                   ; kscrw_i_writeAllThreads + 151
   0x321f1:  movl   %edi, (%esp)
(lldb) frame select 8
frame #8: 0x000333ef Ubibase`kscrashreport_writeStandardReport + 676
Ubibase`kscrashreport_writeStandardReport + 676:
-> 0x333ef:  movl   %ebx, 8(%esp)
   0x333f3:  movl   %esi, %ebx
   0x333f5:  movl   8(%ebp), %esi
   0x333f8:  leal   5646628(%edi), %eax
(lldb) frame select 9
frame #9: 0x00034406 Ubibase`kscrash_i_onCrash + 100
Ubibase`kscrash_i_onCrash + 100:
-> 0x34406:  addl   $20, %esp
   0x34409:  popl   %esi
   0x3440a:  popl   %ebp
   0x3440b:  ret    
(lldb) frame select 10
frame #10: 0x000426d9 Ubibase`kssighndl_i_handleSignal + 195
Ubibase`kssighndl_i_handleSignal + 195:
-> 0x426d9:  movl   $3, (%esp)
   0x426e0:  calll  0x4249d                   ; kscrashsentry_uninstall
   0x426e5:  calll  0x4251b                   ; kscrashsentry_resumeThreads
   0x426ea:  addl   $28, %esp

<redacted> symbols for iOS6 in crash log

I have tried CrashTester application to simulate chrash and symbolicate it.

Hardware Model: iPhone4,1
Process: CrashTester [2790]
Path: /var/mobile/Applications/098798FF-559F-42EB-B56D-3CAA8D26083C/CrashTester.app/CrashTester
Identifier: org.stenerud.CrashTester
Version: 1.0 (1.02)
Code Type: ARM
Parent Process: launchd [1]

Date/Time:       2012-12-04 08:17:19.000 +0300
OS Version:      iPhone OS 6.0.1 (10A523)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000
Crashed Thread:  0

Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 CrashTester 0x000fac20 0xf4000 + 27680 (-[Crasher dereferenceNullPointer] + 24)
1 CrashTester 0x000fa5e0 0xf4000 + 26080 (-[CommandEntry executeWithViewController:] + 44)
2 CrashTester 0x000faac8 0xf4000 + 27336 (-[CommandTVC tableView:didSelectRowAtIndexPath:] + 132)
3 UIKit 0x351a5268 0x350e0000 + 807528 (< redacted> + 872)
4 UIKit 0x35227ea0 0x350e0000 + 1343136 (< redacted> + 156)
5 Foundation 0x36daca68 0x36d04000 + 690792 (< redacted> + 444)
6 CoreFoundation 0x3bf865d8 0x3beef000 + 619992 (< redacted> + 8)
7 CoreFoundation 0x3bf86290 0x3beef000 + 619152 (< redacted> + 272)
8 CoreFoundation 0x3bf84f00 0x3beef000 + 614144 (< redacted> + 1232)

There is a bunch of useless messages. May be this is an iOS6-specific issue
(e.g.
https://devforums.apple.com/thread/171264?start=0&tstart=0
). In any case, please, adopt your approach to this new symbolication way.

Crash report format?

Hi,

how to change the crash format (Apple Format instead of JSON) for mailed reports with the new API?

I tried something like this, but it didn't work:

...
[installation install];
KSCrash* handler = [KSCrash sharedInstance];
handler.sink = [KSCrashReportFilterPipeline filterWithFilters:[KSCrashReportFilterJSONEncode filterWithOptions:KSJSONEncodeOptionSorted | KSJSONEncodeOptionPretty], [KSCrashReportFilterGZipCompress filterWithCompressionLevel:-1], self, nil];
//handler.sink = [KSCrashReportFilterAppleFmt filterWithReportStyle:KSAppleReportStyleSymbolicated];

Thanks!

Where is KSCrashLite.framework ?

As documentation states:

"Using the low level crash reporting API

KSCrash is written in two layers: The part that records crashes, and the part that sends crashes to a server. If you want to do your own high level implementation, you can use KSCrashLite.framework (basically everything inside the "Reporting" source tree) as your base and build upon that."

Could you please specify how to build KSCrashLite.framework ?

KSCrash crash while handling NSExceptions

Thread 0 Crashed:
0 ??? 0000000000 0 + 0
1 CoreFoundation 0x30435184 __handleUncaughtException + 580
2 libobjc.A.dylib 0x3a791926 _objc_terminate() + 174
3 Dummy 0x00078414 CPPExceptionTerminate() (KSCrashSentry_CPPException.mm:199)
4 libc++abi.dylib 0x3a1571b2 std::__terminate(void (*)()) + 78
5 libc++abi.dylib 0x3a156d16 __cxa_rethrow + 102
6 libobjc.A.dylib 0x3a79180e objc_exception_rethrow + 42
7 CoreFoundation 0x303684e6 CFRunLoopRunSpecific + 642
8 CoreFoundation 0x30368252 CFRunLoopRunInMode + 106
9 GraphicsServices 0x350a22ea GSEventRunModal + 138
10 UIKit 0x32c1d844 UIApplicationMain + 1136
11 Dummy 0x00054d08 main (main.m:16)
12 libdyld.dylib 0x3ac8aab6 start + 2

Help! Crash reports not showing method names!

I'm new to crash reporting, and found this awesome tool, which does everything I want. 👍

The only trouble is, in my released app, the crash reports i'm getting don't have readable method names in them, only something like this:
image

Please tell me how to fix this, so that the crash reports have readable method names (instead of . Does enabling 'on-device symbolication' fix this?
Thanks a lot, Stan

Reduce size added to executable

When adding library as a pod or static library, it is always linked with -ObjC flag, because there are object files in library that contain only categories. But library is quite big and adding all of it is not affordable in my case. May be there is a way to add it as a static library while keeping it small?

HockeyApp installation: applicationLogForCrashManager delegate

I'm switching from HockeySDK to KSCrash, however I can't find one feature that's very important to me. When HockeySDK is going to send the crash reports it ask me in the applicationLogForCrashManager delegate for some application logs which would appear in the description section of the crash log webpage.

With this, I get a chance to collect all error logs recorded by cocoalumjack and send them together with the crash report.

I did find out that in KSCrashInstallationHockey there's a property called crashDescription. But it is not enough since I don't have a precise way to collect ALL logs since it is not bound to the moment when the crash report is sent.

A way to just get the crash report, no send.

Hi,

Is there a way to just have the crash when happened, with notification or delegate, or in the next restart of the application to have access to the crash report, so I can get the backtrace information or other stuff.

I don't want the report to be sent anywhere through KSCrash, but gather the information and send it with my custom schema to my server.

Thank you.

Warning in XCode 5.1

KSCrashSentry_CPPException.mm:93:1: Function declared 'noreturn' should not return

Deadlock while writing iphone5s crash

There is a big issue on arm64 devices - iphone5s and ipad air. When dereferencing NULL pointer or calling CFRelease with NULL as argument - application stops responding and later killed by watchdog. It appears that it somehow deadlocks while trying to write 'notable adressess'. We temporarily solved this issue by setting introspectMemory = NO;
We tried to analyze the possible reason and came to conclusion that this is beacause of runtime changes in arm64. For example 'classRW' tries to read from 'class_t' type which is no longer exists in newest runtime version.
Here is crashlog.

Incident Identifier: FE18665B-8298-4C8F-9612-F496D4BE8004
CrashReporter Key: 523fc8ee53c88d0862f7186fe46dea233a6e4ab8
Hardware Model: iPhone6,2
Process: Advanced-Example [1487]
Path: /var/mobile/Applications/5B6D4822-CB4A-4AF2-8837-5AB4860C29D3/Advanced-Example.app/Advanced-Example
Identifier: org.stenerud.Advanced-Example
Version: 1.0 (1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]

Date/Time: 2014-01-24 16:28:39.905 +0300
OS Version: iOS 7.0.4 (11B554a)
Report Version: 104

Exception Type: 00000020
Exception Codes: 0x000000008badf00d
Highlighted Thread: 0

Application Specific Information:
org.stenerud.Advanced-Example failed to exit in time

Elapsed total CPU time (seconds): 1.880 (user 1.880, system 0.000), 14% CPU
Elapsed application CPU time (seconds): 0.000, 0% CPU

Thread 0:
0 Advanced-Example 0x00000001000fa8cc -MainVC onCrash:
1 UIKit 0x000000018a73ca90 -[UIApplication sendAction:to:from:forEvent:] + 96
2 UIKit 0x000000018a73ca24 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 20
3 UIKit 0x000000018a726240 -[UIControl _sendActionsForEvents:withEvent:] + 372
4 UIKit 0x000000018a73c424 -[UIControl touchesEnded:withEvent:] + 580
5 UIKit 0x000000018a73c0b8 -[UIWindow _sendTouchesForEvent:] + 688
6 UIKit 0x000000018a736d50 -[UIWindow sendEvent:] + 1040
7 UIKit 0x000000018a7087b4 -[UIApplication sendEvent:] + 252
8 UIKit 0x000000018a7069c0 _UIApplicationHandleEventQueue + 8468
9 CoreFoundation 0x00000001877f3778 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 20
10 CoreFoundation 0x00000001877f2ad4 __CFRunLoopDoSources0 + 252
11 CoreFoundation 0x00000001877f0d6c __CFRunLoopRun + 628
12 CoreFoundation 0x0000000187731b34 CFRunLoopRunSpecific + 448
13 GraphicsServices 0x000000018d15782c GSEventRunModal + 164
14 UIKit 0x000000018a7700e4 UIApplicationMain + 1152
15 Advanced-Example 0x00000001000faa0c main (main.m:16)
16 libdyld.dylib 0x0000000193d9ba9c start + 0

Thread 1:
0 libsystem_kernel.dylib 0x0000000193e7dac8 kevent64 + 8
1 libdispatch.dylib 0x0000000193d81d74 _dispatch_mgr_thread + 48

Thread 2 name: KSCrash Exception Handler (Secondary)
Thread 2:
0 libsystem_kernel.dylib 0x0000000193e7dcc0 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000193e8211c thread_suspend + 80
2 Advanced-Example 0x0000000100115254 ksmachexc_i_handleExceptions (KSCrashSentry_MachException.c:223)
3 libsystem_pthread.dylib 0x0000000193f181ac _pthread_body + 164
4 libsystem_pthread.dylib 0x0000000193f18104 _pthread_start + 136
5 libsystem_pthread.dylib 0x0000000193f157ac thread_start + 0

Thread 3 name: KSCrash Exception Handler (Primary)
Thread 3:
0 Advanced-Example 0x000000010012fcc8 classRW (KSObjC.c:358)
1 Advanced-Example 0x000000010012c6f4 ksobjc_className (KSObjC.c:593)
2 Advanced-Example 0x0000000100128424 kscrw_i_writeMemoryContents (KSCrashReport.c:989)
3 Advanced-Example 0x0000000100128e20 kscrw_i_writeMemoryContentsIfNotable (KSCrashReport.c:1069)
4 Advanced-Example 0x00000001001299a8 kscrw_i_writeNotableRegisters (KSCrashReport.c:1387)
5 Advanced-Example 0x0000000100129a28 kscrw_i_writeNotableAddresses (KSCrashReport.c:1407)
6 Advanced-Example 0x0000000100129d14 kscrw_i_writeThread (KSCrashReport.c:1499)
7 Advanced-Example 0x0000000100129e6c kscrw_i_writeAllThreads (KSCrashReport.c:1538)
8 Advanced-Example 0x000000010012b784 kscrashreport_writeStandardReport (KSCrashReport.c:2169)
9 Advanced-Example 0x0000000100130260 kscrash_i_onCrash (KSCrashC.c:116)
10 Advanced-Example 0x000000010011547c ksmachexc_i_handleExceptions (KSCrashSentry_MachException.c:310)
11 libsystem_pthread.dylib 0x0000000193f181ac _pthread_body + 164
12 libsystem_pthread.dylib 0x0000000193f18104 _pthread_start + 136
13 libsystem_pthread.dylib 0x0000000193f157ac thread_start + 0

Thread 4:
0 libsystem_kernel.dylib 0x0000000193e7dcc0 mach_msg_trap + 8
1 CoreFoundation 0x00000001877f2ca8 __CFRunLoopServiceMachPort + 180
2 CoreFoundation 0x00000001877f0e38 __CFRunLoopRun + 832
3 CoreFoundation 0x0000000187731b34 CFRunLoopRunSpecific + 448
4 CoreFoundation 0x00000001877871e0 CFRunLoopRun + 108
5 CoreMotion 0x0000000187ee2020 ___lldb_unnamed_function1423$$CoreMotion + 640
6 libsystem_pthread.dylib 0x0000000193f181ac _pthread_body + 164
7 libsystem_pthread.dylib 0x0000000193f18104 _pthread_start + 136
8 libsystem_pthread.dylib 0x0000000193f157ac thread_start + 0

Thread 5:
0 libsystem_kernel.dylib 0x0000000193e96e74 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x0000000193f157a4 start_wqthread + 0

Thread 6:
0 libsystem_kernel.dylib 0x0000000193e96e74 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x0000000193f157a4 start_wqthread + 0

No thread state (register information) available
Binary Images:
0x1000f4000 - 0x10014ffff Advanced-Example arm64 <71074890ceac3c2eabd0ed0b8e62394c> /var/mobile/Applications/5B6D4822-CB4A-4AF2-8837-5AB4860C29D3/Advanced-Example.app/Advanced-Example
0x1200a8000 - 0x1200cffff dyld arm64 /usr/lib/dyld

.....

/usr/lib/system/libunwind.dylib
0x193f2c000 - 0x193f4ffff libxpc.dylib arm64 /usr/lib/system/libxpc.dylib

Add option to send the console logs that lead up to the crash?

Is there any possibility you could add the ability to attach console logs up with the crash report? Say something along the lines of:...

aslmsg query = asl_new(ASL_TYPE_QUERY);

NSMutableString *logs = [NSMutableString stringWithString:@""];

aslresponse response = asl_search(NULL, query);
asl_set_query(query, ASL_KEY_TIME, [logSince UTF8String], ASL_QUERY_OP_GREATER_EQUAL);

NSUInteger count = 0;
NSUInteger max = 256;

while (NULL != (currentMessage = aslresponse_next(response))) {
    [logs appendString:@"\n    "];
    [logs appendFormat:@"%s=%s ", "Time", asl_get(currentMessage, ASL_KEY_TIME)];
    [logs appendFormat:@"%s=%s ", "Sender", asl_get(currentMessage, ASL_KEY_SENDER)];
    [logs appendFormat:@"%s=%s ", "Level", asl_get(currentMessage, ASL_KEY_LEVEL)];
    [logs appendFormat:@"%s=%s", "Message", asl_get(currentMessage, ASL_KEY_MSG)];

    count++;
    if (count >= max) {
        break;
    }
}
aslresponse_free(response);
asl_free(query);

If I were to submit a PR to add this feature would you be open to merging in such a feature?

Get Reports in Apple Format

In iOS, we can get all crash reports which is in Library/Cache ... But that is saved in JSON format. Is there any way to get reports in Apple format or save it in Apple format. I am not using any Installation classes. I am just uploading those reports to our own server.

Crash on Release - [KSCrashReportFilterPipeline initWithFiltersArray:]

Hi,

My app crash everytime I launch it in release mode.

Here is my AppDelegate.m code

KSCrashInstallationStandard *installation = [KSCrashInstallationStandard sharedInstance];
installation.url = [NSURL URLWithString:@"http://URL/crash.php"];
[installation sendAllReportsWithCompletion:^(NSArray *filteredReports, BOOL completed, NSError *error) {
    DDLogInfo(@"### Sending %d logs : %@", [filteredReports count], completed ? @"YES" : @"NO");
    [[KSCrash sharedInstance] deleteAllReports];
}];
[installation install];
Incident Identifier: 0A8D1D23-AF6A-4442-9CB5-18B7F669E81B
CrashReporter Key:   2b160c89120fb10dcbe525cb5e1fce7be2511b1e
Hardware Model:      iPhone2,1
Process:         MyApp [1534]
Path:            /var/mobile/Applications/42B04A0B-DB12-451A-8088-AC143620B93E/MyApp.app/MyApp
Identifier:      MyApp
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  debugserver [1530]

Date/Time:       2014-01-07 11:44:51.691 +0100
OS Version:      iOS 6.1.3 (10B329)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000013
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x3abe3526 objc_retain + 6
1   MyApp                           0x0011c4a4 -[KSCrashReportFilterPipeline initWithFiltersArray:] (KSCrashReportFilter.m:265)
2   MyApp                           0x0011c326 +[KSCrashReportFilterPipeline filterWithFilters:] (KSCrashReportFilter.m:256)
3   MyApp                           0x00118bfe -[KSCrashInstallationStandard sink] (KSCrashInstallationStandard.m:60)
4   MyApp                           0x00117d2e -[KSCrashInstallation sendAllReportsWithCompletion:] (KSCrashInstallation.m:360)
5   MyApp                           0x00093928 -[AppDelegate application:didFinishLaunchingWithOptions:] (AppDelegate.m:41)
6   UIKit                           0x34df4ad4 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 248
7   UIKit                           0x34df465e -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1186
8   UIKit                           0x34dec846 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 694
9   UIKit                           0x34d94c34 -[UIApplication handleEvent:withNewEvent:] + 1000
10  UIKit                           0x34d946c8 -[UIApplication sendEvent:] + 68
11  UIKit                           0x34d94116 _UIApplicationHandleEvent + 6150
12  GraphicsServices                0x36a505a0 _PurpleEventCallback + 588
13  GraphicsServices                0x36a501ce PurpleEventCallback + 30
14  CoreFoundation                  0x32f61170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
15  CoreFoundation                  0x32f61112 __CFRunLoopDoSource1 + 134
16  CoreFoundation                  0x32f5ff94 __CFRunLoopRun + 1380
17  CoreFoundation                  0x32ed2eb8 CFRunLoopRunSpecific + 352
18  CoreFoundation                  0x32ed2d44 CFRunLoopRunInMode + 100
19  UIKit                           0x34deb480 -[UIApplication _run] + 664
20  UIKit                           0x34de82fc UIApplicationMain + 1116
21  MyApp                           0x0009374a main (main.m:5)
22  libdyld.dylib                   0x3b01db1c start + 0

Thank you for your help !

kscrashsentry_installCPPExceptionHandler issues @kstenerud

I am using crashlytics for tracking the crashes and I am receiving this "kscrashsentry_installCPPExceptionHandler" crash with ios7 and ios8 I have checked all things i.e. libraries to link with like libc++.dylib etc in my app in developer mode i am not seeing any crash but while app goes live it has this issues. How can I know the it is library issues or what is the cause of this issue. I need to fix it asap thanks for prompt replies.

details:

Crashed: com.apple.main-thread
SIGABRT ABORT at 0x0000000195d13270

Thread : Crashed: com.apple.main-thread
0 libsystem_kernel.dylib 0x0000000195d13270 __pthread_kill + 8
1 libsystem_pthread.dylib 0x0000000195db1228 pthread_kill + 112
2 libsystem_c.dylib 0x0000000195c8ab18 abort + 112
3 libc++abi.dylib 0x0000000194d5d418 __cxa_bad_cast
4 libc++abi.dylib 0x0000000194d7cb8c default_unexpected_handler()
5 libobjc.A.dylib 0x000000019558c3c0 _objc_terminate() + 128
6 appname 0x0000000100389f38 kscrashsentry_installCPPExceptionHandler + 1235576
7 libc++abi.dylib 0x0000000194d79bb4 std::__terminate(void (*)()) + 16
8 libc++abi.dylib 0x0000000194d7973c __cxa_rethrow + 144
9 libobjc.A.dylib 0x000000019558c294 objc_exception_rethrow + 44
10 CoreFoundation 0x0000000184d25154 CFRunLoopRunSpecific + 572
11 GraphicsServices 0x000000018debf5a4 GSEventRunModal + 168
12 UIKit 0x0000000189656aa4 UIApplicationMain + 1488
13 appname 0x00000001000673a8 main (main.m:23)
14 libdyld.dylib 0x0000000195bfaa08 start + 4

my main.m is

int main(int argc, char* argv[])
{
@autoreleasepool
{
int returnValue;
@Try
{
returnValue = UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}

    @catch (NSException* exception)
    {
        NSLog(@"Uncaught exception: %@, %@", [exception description],[exception callStackSymbols]);
        @throw exception;
    }
    return returnValue;
}

}

Ability to Add Data in Reports

Hi
Can you add support for writing back the report retrieved through the report store after adding some user data in the report.

Scenario
Lets say the user re-opens the app after experiencing a crash. I would like to ask the user to tell me what they were trying to do so that I can recreate the crash etc. (I present a textview for this)

What I am currently able to do

  • When the app opens and I have a pending crash report
  • I request the report from the reportStore
  • Ask the user what happened at crash time
  • Add the message to User At Crash dictionary
  • Assign a sink (Quincy) to the crashReporter
  • Tell the reportStore to send the report
  • Delete the report on success

If the network is available at the time, all works well, however if the network is not available, the report dispatch fails. (That's all right, we can send it next time the app is launched.)

Now the next time the user opens the app, I don't want to ask him again to tell me what the crash was about. I want the information that he has already provided to be written back to the FS so that I can check if he has already provided a message for a crash and instantly try to dispatch the report without asking the user again.


The above description reminds me, if possible please also add a on failure block for the Sink so that we can check if the report failed to send (especially when trying to connect to a remote server) and take appropriate actions

Thanks

Is __cxa_throw threadsafe?

Hi,

Has the replacement __cxa_throw in KSCrashSentry_CPPException.mm been tested for thread safety? It looks like all the state it deals with is global, which is problematic if other threads are throwing and catching exceptions concurrent with the throw of an uncaught exception that will crash.

Cheers,

  • Ben.

Send crash report in realtime(as opposed to next launch)

Hi - thanks for all your hard work creating a comprehensive crash library...we notice that some other commercial reporting tools (ie. BugSnag 3.x) would send crash reports in realtime as the app crashes, as opposed to sending reports on the next launch.

Any reason why KSCrash can not(or should not) be modified to write reports directly over the network vs. waiting until the next launch?

Thanks,
Michael Lake
WillowTree Apps

support for simulator 64 bit

Upon parsing crash in simulator I am getting this message:

CrashDoctor Diagnosis: No diagnosis due to exception *** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array:
(
0 CoreFoundation 0x000000010207a795 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000101d0e991 objc_exception_throw + 43
2 CoreFoundation 0x00000001020208e5 -[__NSArrayM objectAtIndex:] + 213
3 MetricaSample 0x000000010001a7e4 -[KSCrashDoctor zombieCall:] + 308
4 MetricaSample 0x000000010001aeeb -[KSCrashDoctor diagnoseCrash:] + 1259
5 MetricaSample 0x000000010002c0b7 -[KSCrashReportStore fixupCrashReport:] + 711
6 MetricaSample 0x000000010002ca2e -[KSCrashReportStore readReport:error:] + 334
7 MetricaSample 0x000000010002b5fe -[KSCrashReportStore reportWithID:] + 110
8 MetricaSample 0x0000000100057755 -[YMMCrashReportDecoder decodeAndSave] + 181
9 MetricaSample 0x0000000100058e37 -[YMMCrashReporter handleCrashReports:] + 631
10 MetricaSample 0x0000000100058951 -[YMMCrashReporter loadCrashReports] + 449
11 MetricaSample 0x0000000100055c23 __36-[YMMCounterImpl startCrashReporter]_block_invoke + 147
12 libdispatch.dylib 0x000000010236d8c1 _dispatch_call_block_and_release + 12
13 libdispatch.dylib 0x00000001023806fd _dispatch_client_callout + 8
14 libdispatch.dylib 0x000000010236fe37 _dispatch_queue_drain + 481
15 libdispatch.dylib 0x000000010236fbfc _dispatch_queue_invoke + 112
16 libdispatch.dylib 0x0000000102370b14 _dispatch_root_queue_drain + 257
17 libdispatch.dylib 0x0000000102370d65 _dispatch_worker_thread2 + 40
18 libsystem_pthread.dylib 0x000000010272aef8 _pthread_wqthread + 314
19 libsystem_pthread.dylib 0x000000010272dfb9 start_wqthread + 13
)
Please file a bug report to the KSCrash project.

It happend due to inability to detect cpu type and returning CPUFamilyUnknown. Need to add x86_64 support here and also register names set for x86_64 needed to be added (rax for eax etc)

Cannot extract thread and queue name

I took your sample and printing to console crash reports and trying to see thread name and thread queue name. I can only see
"dispatch_queue" = "com.apple.main-thread";
for the main thread. But no thread names or dispatch queue names for other threads. But I do need this info. Could you please provide some info on subject? I've tried using different devices - ipad mini ios 6.1 ipad 1 ios 5.1.1 - result is the same.
In ios 7 - it doesn't read names at all.

KSCrash not working for Static Library

When i tried adding the KSCrash report to a normal project it works , but when i integrate the same with a static library project which is invoked by a application, it throws up error. Any help? . I am getting Apple Mach O linker error.

KSCrashInstallationStandard does not send report to server

Having found that the email sink works perfectly out of the box I wanted to use the standard sink to send reports to my server. I've tried entering my server URL in the advanced example and also adding standard sink code to my simple (working) email sink demo app and neither actually send any POST data through to the server.

Here's my code in AppDelegate:

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    // Override point for customization after application launch.

    KSCrashInstallation* installation = [self makeEmailInstallation];
    KSCrashInstallation* installation2 = [self makeStandardInstallation];

    [installation install];
    [installation2 install];
    [KSCrash sharedInstance].deleteBehaviorAfterSendAll = KSCDeleteNever; //KSCDeleteOnSucess;

    [installation sendAllReportsWithCompletion:^(NSArray* reports, BOOL completed, NSError* error) {
    if(completed) {
    NSLog(@"Sent %d reports", (int)[reports count]);
    } else {
    NSLog(@"Failed to send reports: %@", error);
    }
    }];
    [installation2 sendAllReportsWithCompletion:^(NSArray* reports, BOOL completed, NSError* error) {
    if(completed) {
    NSLog(@"2 Sent %d reports", (int)[reports count]);
    } else {
    NSLog(@"2 Failed to send reports: %@", error);
    }
    }];
    return YES;
    }

  • (KSCrashInstallation_) makeEmailInstallation
    {
    NSString_ emailAddress = @"";

    KSCrashInstallationEmail* email = [KSCrashInstallationEmail sharedInstance];
    email.recipients = @[emailAddress];
    email.subject = @"Crash Report";
    email.message = @"This is a crash report";
    email.filenameFmt = @"crash-report-%d.txt.gz";

    [email addConditionalAlertWithTitle:@"Crash Detected"
    message:@"The app crashed last time it was launched."
    yesAnswer:@"Send report"
    noAnswer:nil];

    // Uncomment to send Apple style reports instead of JSON.
    [email setReportStyle:KSCrashEmailReportStyleApple useDefaultFilenameFormat:YES];

    return email;
    }

  • (KSCrashInstallation_) makeStandardInstallation
    {
    NSURL_ url = [NSURL URLWithString:@"http:///test.php"];

    KSCrashInstallationStandard* standard = [KSCrashInstallationStandard sharedInstance];
    standard.url = url;

    return standard;
    }

My server PHP script does the following:

$subject="test of crash log api";
$mess="the request was\n\n";
$mess.=print_r($_GET, true);
$mess.="... post...\n\n";
$mess.=print_r($_POST, true);

mail("", $subject, $mess, "From: me<>\nReply-To: $emil\nX-Mailer: PHP/" . phpversion());

If I add GET parameters to the URL they come through. Nothing is printed out for the POST parameters in the email I then receive.

What am I missing?

Thanks for any help!

__NSDictionaryM safeSetObject:forKey error

hi,it can't run .
KSCrash: App is running in a debugger. The following crash types have been disabled:

  • KSCrashTypeMachException
  • KSCrashTypeNSException
    2013-10-14 17:17:02.153 Simple-Example[5776:c07] -[__NSDictionaryM safeSetObject:forKey:]: unrecognized selector sent to instance 0xa26a930
    2013-10-14 17:17:02.156 Simple-Example[5776:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryM safeSetObject:forKey:]: unrecognized selector sent to instance 0xa26a930'
    *** First throw call stack:
    (0x18b2012 0x13a7e7e 0x193d4bd 0x18a1bbc 0x18a194e 0x34883 0x35121 0x2b93c 0x4225 0x3ca05 0x295d 0x28a6 0x2e9157 0x2e9747 0x2ea94b 0x2fbcb5 0x2fcbeb 0x2ee698 0x2672df9 0x2672ad0 0x1827bf5 0x1827962 0x1858bb6 0x1857f44 0x1857e1b 0x2ea17a 0x2ebffc 0x280d 0x2735)
    libc++abi.dylib: terminate called throwing an exception

pod install Mac-O linker error

Undefined symbols for architecture armv7s:
"typeinfo for unsigned long long", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for long long", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for unsigned short", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for unsigned long", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for long", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for int", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for unsigned char", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"___cxa_current_exception_type", referenced from:
CPPExceptionTerminate() in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for long double", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for char", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for double", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"_inflateEnd", referenced from:
-[NSData(GZip) gunzippedWithError:] in libPods.a(NSData+GZip.o)
"typeinfo for std::exception", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for char*", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"std::terminate()", referenced from:
___clang_call_terminate in libPods.a(KSCrashSentry_CPPException.o)
"___cxa_demangle", referenced from:
CPPExceptionTerminate() in libPods.a(KSCrashSentry_CPPException.o)
"___cxa_begin_catch", referenced from:
CPPExceptionTerminate() in libPods.a(KSCrashSentry_CPPException.o)
___clang_call_terminate in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for float", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"_inflate", referenced from:
-[NSData(GZip) gunzippedWithError:] in libPods.a(NSData+GZip.o)
"deflateInit2", referenced from:
-[NSData(GZip) gzippedWithCompressionLevel:error:] in libPods.a(NSData+GZip.o)
"___cxa_rethrow", referenced from:
CPPExceptionTerminate() in libPods.a(KSCrashSentry_CPPException.o)
"__cxa_end_catch", referenced from:
CPPExceptionTerminate() in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for char const
", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"typeinfo for short", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"deflate", referenced from:
-[NSData(GZip) gzippedWithCompressionLevel:error:] in libPods.a(NSData+GZip.o)
"std::set_terminate(void (
)())", referenced from:
_kscrashsentry_installCPPExceptionHandler in libPods.a(KSCrashSentry_CPPException.o)
_kscrashsentry_uninstallCPPExceptionHandler in libPods.a(KSCrashSentry_CPPException.o)
"inflateInit2", referenced from:
-[NSData(GZip) gunzippedWithError:] in libPods.a(NSData+GZip.o)
"typeinfo for unsigned int", referenced from:
GCC_except_table2 in libPods.a(KSCrashSentry_CPPException.o)
"_deflateEnd", referenced from:
-[NSData(GZip) gzippedWithCompressionLevel:error:] in libPods.a(NSData+GZip.o)
"OBJC_CLASS$_MFMailComposeViewController", referenced from:
objc-class-ref in libPods.a(KSCrashReportSinkEMail.o)
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

incorrect memory information

hi, the following is part of my crash log,
..........
memory = {
free = 427048960;
size = 1023373312;
usable = 3637526528;
};
...........

size reads from @"hw.memsize" ( [NSDictionary dictionaryWithObject:[self int64Sysctl:@"hw.memsize"] forKey:@KSSystemField_Size]), and
usable = ((uint64_t)pageSize) * (vmStats.active_count +
vmStats.inactive_count +
vmStats.wire_count +
vmStats.free_count);
shouldn't they be equal? and which is correct?
my test device is iPad mini 2 with iOS7.1.2 and Apple A7(arm64)

Out of Memory crash testing

Hi and thanks for such wonderful library. Is there any way this could be used to troubleshoot out of memory situations and determine who is allocating and not releasing memory when out of memory exception occurs?

MessageUI required

KSCrash uses MessageUI framework as required. However, users could not use mail sending provided by KSCrash, so there is no neet to include MessageUI.

So MessageUI should be optional.

Also, MessageUI should be added to podspec as well.

Moreover, to fit podspec approach, it is better to use tagging or stable branching approach. At this moment it is difficult to detect "stable" code versions.

tag 0.0.3

Hi! We need tag 0.0.3 in the repository. Could you please create it?

Executable path is (null) on iOS 7 and higher

Starting with iOS 7 [NSBundle infoDictionary] doesn't contain CFBundleExecutablePath.
So, "Path" is always (null):

Incident Identifier: 0017E322-A9D3-454A-88D5-F17189297102
CrashReporter Key:   038c154481ef9b7e01c9eafadf24ea6ed2401918
Hardware Model:      iPhone6,1
Process:         MyAPP
Path:            (null)
...

Deadlock detection does not work

F.ex. Crash-tester has deadlocking enabled:
handler.deadlockWatchdogInterval = 8;
But when I press "Deadlock main queue" or "Deadlock pthread" app deadlocks, but deadlock handler is never called.
runMonitor is never called due to KSCrashDeadlockMonitor is never initialised.
It looks like kscrashsentry_installDeadlockHandler must be called manually? If, yes I do not know when and what to put as KSCrash_SentryContex*context parameter?

Seems that UUID in crash report doesn't match that in App and dSYM

Hi,

Wondering if I'm using KSCrash wrong...

I tried KSCrash and have uploaded to Hockeyapp, but some crash groups failed to match the symbols, here's the issue I created on hockey support:
http://support.hockeyapp.net/discussions/problems/12947-can-not-display-the-symbols-of-my-crash-log

And this is the report KSCrash generated:
Incident Identifier: C303C028-EB08-4E00-862F-0B0FEE884F53
CrashReporter Key: f6fc750e9f1cf18db9862e360c1eb99c08ae661f
Hardware Model: iPhone5,2
Process: Video Downloader [265]
Path: /var/mobile/Applications/203C83D4-2208-4D23-B6B2-BB565F7841D2/Video Downloader.app/Video Downloader
Identifier: com.toprankapps.videodownloader
Version: 1.1 (105)
Code Type: ARM
Parent Process: launchd [1]

Date/Time: 2013-08-05 14:33:16.000 +0900
OS Version: iPhone OS 6.1.4 (10B350)
Report Version: 104

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000 at 0x39360350
Crashed Thread: 13

Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x39360c80 unlink + 8
1 libremovefile.dylib 0x392a6800 __removefile_process_file + 240
2 libremovefile.dylib 0x392a6890 __removefile_tree_walker + 116
3 libremovefile.dylib 0x392a6a78 removefile + 120
4 Foundation 0x31a01118 -[NSFilesystemItemRemoveOperation main] + 168
5 Foundation 0x319ffa88 -[__NSOperationInternal start] + 840
6 Foundation 0x319fea08 -[NSFileManager removeItemAtPath:error:] + 80
7 Video Downloader 0x000f0da0 0xa6000 + 306592 (_mh_execute_header + 306592)
8 Video Downloader 0x000d4110 0xa6000 + 188688 (_mh_execute_header + 188688)
9 UIKit 0x3314a178 -[UITableView(UITableViewInternal) animateDeletionOfRowWithCell:] + 84
10 UIKit 0x3306b080 -[UIApplication sendAction:to:from:forEvent:] + 64
11 UIKit 0x3306b038 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 28
12 UIKit 0x3306b010 -[UIControl sendAction:to:forEvent:] + 40
13 UIKit 0x3306a8c8 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 500
14 UIKit 0x3306b080 -[UIApplication sendAction:to:from:forEvent:] + 64
15 UIKit 0x3306b038 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 28
16 UIKit 0x3306b010 -[UIControl sendAction:to:forEvent:] + 40
17 UIKit 0x3306a8c8 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 500
18 UIKit 0x3306adb8 -[UIControl touchesEnded:withEvent:] + 488
19 UIKit 0x32f935f8 -[UIWindow _sendTouchesForEvent:] + 524
20 Video Downloader 0x00119178 0xa6000 + 471416 (_mh_execute_header + 471416)
21 UIKit 0x32f808e0 -[UIApplication sendEvent:] + 380
22 UIKit 0x32f801e8 _UIApplicationHandleEvent + 6192
23 GraphicsServices 0x34c985f0 _PurpleEventCallback + 584
24 GraphicsServices 0x34c98220 PurpleEventCallback + 28
25 CoreFoundation 0x311463e0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION
+ 28
26 CoreFoundation 0x31146388 __CFRunLoopDoSource1 + 136
27 CoreFoundation 0x31145208 __CFRunLoopRun + 1376
28 CoreFoundation 0x310b8238 CFRunLoopRunSpecific + 352
29 CoreFoundation 0x310b80c8 CFRunLoopRunInMode + 104
30 GraphicsServices 0x34c97338 GSEventRunModal + 72
31 UIKit 0x32fd42b8 UIApplicationMain + 1120
32 Video Downloader 0x000c1788 0xa6000 + 112520 (_mh_execute_header + 112520)

Thread 1:
0 libsystem_kernel.dylib 0x393505d0 kevent64 + 24
1 libdispatch.dylib 0x39287378 _dispatch_mgr_thread + 36

Thread 2:
0 libsystem_kernel.dylib 0x3934fe30 mach_msg_trap + 20
1 CoreFoundation 0x311462b8 __CFRunLoopServiceMachPort + 128
2 CoreFoundation 0x31145030 __CFRunLoopRun + 904
3 CoreFoundation 0x310b8238 CFRunLoopRunSpecific + 352
4 CoreFoundation 0x310b80c8 CFRunLoopRunInMode + 104
5 WebCore 0x370c0390 _ZL12RunWebThreadPv + 440
6 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 3:
0 libsystem_kernel.dylib 0x393606a4 semwait_signal + 24
1 Foundation 0x31a2c190 +[NSThread sleepForTimeInterval:] + 128
2 Video Downloader 0x006fbba0 0xa6000 + 6642592 (_ZN15CTXAppidConvert10IsMQQAppIdEPKc + 567716)
3 Foundation 0x31a89230 __NSThread__main
+ 972
4 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 4:
0 libsystem_kernel.dylib 0x3934fe30 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x39352f88 thread_suspend + 40
2 Video Downloader 0x006f7ce0 0xa6000 + 6626528 (_ZN15CTXAppidConvert10IsMQQAppIdEPKc + 551652)
3 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 5:
0 libsystem_kernel.dylib 0x3934fe30 mach_msg_trap + 20
1 Video Downloader 0x006f7d00 0xa6000 + 6626560 (_ZN15CTXAppidConvert10IsMQQAppIdEPKc + 551684)
2 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 6:
0 libsystem_kernel.dylib 0x3934fe30 mach_msg_trap + 20
1 CoreFoundation 0x311462b8 __CFRunLoopServiceMachPort + 128
2 CoreFoundation 0x31145030 __CFRunLoopRun + 904
3 CoreFoundation 0x310b8238 CFRunLoopRunSpecific + 352
4 CoreFoundation 0x310b80c8 CFRunLoopRunInMode + 104
5 Video Downloader 0x001868e8 0xa6000 + 919784 (_mh_execute_header + 919784)
6 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 7:
0 libsystem_kernel.dylib 0x3934fe30 mach_msg_trap + 20
1 CoreFoundation 0x311462b8 CFRunLoopServiceMachPort + 128
2 CoreFoundation 0x31145030 __CFRunLoopRun + 904
3 CoreFoundation 0x310b8238 CFRunLoopRunSpecific + 352
4 CoreFoundation 0x310b80c8 CFRunLoopRunInMode + 104
5 Foundation 0x31a05888 +[NSURLConnection(Loader) _resourceLoadLoop:] + 304
6 Foundation 0x31a89230 __NSThread__main
+ 972
7 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 8:
0 libsystem_kernel.dylib 0x39360594 __select + 20
1 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 9:
0 libsystem_kernel.dylib 0x3936008c __psynch_cvwait + 24
1 libsystem_c.dylib 0x392b1870 pthread_cond_timedwait + 40
2 JavaScriptCore 0x3508ddf8 WTF::ThreadCondition::timedWait(WTF::Mutex&, double) + 104
3 JavaScriptCore 0x351a0530 JSC::BlockAllocator::blockFreeingThreadMain() + 76
4 JavaScriptCore 0x351b3030 _ZN3WTFL19wtfThreadEntryPointEPv + 12
5 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 10:
0 libsystem_kernel.dylib 0x3936008c __psynch_cvwait + 24
1 libsystem_c.dylib 0x392bbcf8 pthread_cond_wait + 36
2 JavaScriptCore 0x351336e0 JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode) + 144
3 JavaScriptCore 0x35133620 JSC::MarkStackThreadSharedData::markingThreadMain() + 140
4 JavaScriptCore 0x351b3030 _ZN3WTFL19wtfThreadEntryPointEPv + 12
5 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 11:
0 libsystem_kernel.dylib 0x3934fe30 mach_msg_trap + 20
1 CoreFoundation 0x311462b8 __CFRunLoopServiceMachPort + 128
2 CoreFoundation 0x31145030 __CFRunLoopRun + 904
3 CoreFoundation 0x310b8238 CFRunLoopRunSpecific + 352
4 CoreFoundation 0x310b80c8 CFRunLoopRunInMode + 104
5 WebCore 0x3715acd0 _ZN7WebCoreL15runLoaderThreadEPv + 144
6 JavaScriptCore 0x351b3030 _ZN3WTFL19wtfThreadEntryPointEPv + 12
7 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 12:
0 libsystem_kernel.dylib 0x3936008c __psynch_cvwait + 24
1 libsystem_c.dylib 0x392bbcf8 pthread_cond_wait + 36
2 JavaScriptCore 0x3508ddc8 WTF::ThreadCondition::timedWait(WTF::Mutex&, double) + 56
3 WebCore 0x372d4e80 WTF::PassOwnPtrWebCore::StorageTask WTF::MessageQueueWebCore::StorageTask::waitForMessageFilteredWithTimeout<bool ()(WebCore::StorageTask*)>(WTF::MessageQueueWaitResult&, bool (&)(WebCore::StorageTask*), double) + 56
4 WebCore 0x372d4e30 WebCore::StorageThread::threadEntryPoint() + 120
5 JavaScriptCore 0x351b3030 _ZN3WTFL19wtfThreadEntryPointEPv + 12
6 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 13 Crashed:
0 libsystem_kernel.dylib 0x39360350 __pthread_kill + 8
1 libsystem_c.dylib 0x39313368 abort + 92
2 libsystem_c.dylib 0x392f3e10 basename + 0
3 Video Downloader 0x0016f228 0xa6000 + 823848 (_mh_execute_header + 823848)
4 Video Downloader 0x000f3d08 0xa6000 + 318728 (_mh_execute_header + 318728)
5 CoreFoundation 0x31165ae8 __NSArrayEnumerate + 388
6 CoreFoundation 0x310c7e30 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 56
7 Video Downloader 0x000f3bb0 0xa6000 + 318384 (_mh_execute_header + 318384)
8 Video Downloader 0x0016f5e0 0xa6000 + 824800 (_mh_execute_header + 824800)
9 libdispatch.dylib 0x39287488 _dispatch_source_invoke + 252
10 libdispatch.dylib 0x3928a610 _dispatch_root_queue_drain + 208
11 libdispatch.dylib 0x3928a7d8 _dispatch_worker_thread2 + 92
12 libsystem_c.dylib 0x392ae7f0 _pthread_wqthread + 360

Thread 14:
0 libsystem_kernel.dylib 0x3936008c __psynch_cvwait + 24
1 libsystem_c.dylib 0x392bbcf8 pthread_cond_wait + 36
2 CoreMedia 0x3169e7c8 FigSemaphoreWaitRelative + 268
3 MediaToolbox 0x32190948 fpa_AsyncMovieControlThread + 48
4 CoreMedia 0x316bc888 figThreadMain + 192
5 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 15:
0 libsystem_kernel.dylib 0x3934fe30 mach_msg_trap + 20
1 MediaToolbox 0x32196b80 FigExpressNotificationThread + 100
2 CoreMedia 0x316bc888 figThreadMain + 192
3 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 16:
0 libsystem_kernel.dylib 0x3934fe30 mach_msg_trap + 20
1 CoreFoundation 0x311462b8 CFRunLoopServiceMachPort + 128
2 CoreFoundation 0x31145030 __CFRunLoopRun + 904
3 CoreFoundation 0x310b8238 CFRunLoopRunSpecific + 352
4 CoreFoundation 0x310b80c8 CFRunLoopRunInMode + 104
5 Foundation 0x319dc5c0 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 252
6 Foundation 0x31a7fc40 -[NSRunLoop(NSRunLoop) run] + 76
7 Video Downloader 0x002a2570 0xa6000 + 2082160 (_mh_execute_header + 2082160)
8 Foundation 0x31a89230 __NSThread__main
+ 972
9 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 17:
0 libsystem_kernel.dylib 0x39360d98 __workq_kernreturn + 8
1 libsystem_c.dylib 0x392ae7f0 _pthread_wqthread + 360

Thread 18:
0 libsystem_kernel.dylib 0x3936008c __psynch_cvwait + 24
1 libsystem_c.dylib 0x392bbcf8 pthread_cond_wait + 36
2 CoreMedia 0x3169e7c8 FigSemaphoreWaitRelative + 268
3 MediaToolbox 0x32190948 fpa_AsyncMovieControlThread + 48
4 CoreMedia 0x316bc888 figThreadMain + 192
5 libsystem_c.dylib 0x392b90e0 _pthread_start + 308

Thread 19:
0 libsystem_kernel.dylib 0x39360d98 __workq_kernreturn + 8
1 libsystem_c.dylib 0x392ae7f0 _pthread_wqthread + 360

Thread 20:
0 libsystem_kernel.dylib 0x39360d98 __workq_kernreturn + 8
1 libsystem_c.dylib 0x392ae7f0 _pthread_wqthread + 360

Thread 13 crashed with ARM Thread State:
r0: 0x00000000 r1: 0x00000000 r2: 0x00000000 r3: 0x3ae22524
r4: 0x00000006 r5: 0x0c341000 r6: 0x0079bbcc r7: 0x0c340d04
r8: 0x0079bb74 r9: 0x0c340c50 r10: 0x208a0f60 r11: 0x240736f0
ip: 0x00000148 sp: 0x0c340cf8 lr: 0x392d6fb7 pc: 0x39360350
cpsr: 0x00000010

Binary Images:
0xa6000 - 0x959fff +Video Downloader armv7 /var/mobile/Applications/203C83D4-2208-4D23-B6B2-BB565F7841D2/Video Downloader.app/Video Downloader
0x3915e000 - 0x3920bfff libxml2.2.dylib armv7s /usr/lib/libxml2.2.dylib
0x389ea000 - 0x38b33fff libicucore.A.dylib armv7s <642482cfc34a3a3b97bd731258dcdc6a> /usr/lib/libicucore.A.dylib
0x32ebd000 - 0x32f2afff Social armv7s <39d091c33dc931b687332160d18a3d8d> /System/Library/Frameworks/Social.framework/Social
0x308bd000 - 0x308cefff Accounts armv7s /System/Library/Frameworks/Accounts.framework/Accounts
0x317e1000 - 0x31843fff CoreText armv7s /System/Library/Frameworks/CoreText.framework/CoreText
0x33511000 - 0x33527fff iAd armv7s /System/Library/Frameworks/iAd.framework/iAd
0x3178a000 - 0x317e0fff CoreTelephony armv7s <930c89780b123ecea46cff85c4989982> /System/Library/Frameworks/CoreTelephony.framework/CoreTelephony
0x31854000 - 0x31908fff EventKit armv7s <6282cd57cf6233359489a46554a5bb15> /System/Library/Frameworks/EventKit.framework/EventKit
0x3160e000 - 0x31666fff CoreLocation armv7s <24dab19c71e831d187b56fe095483c16> /System/Library/Frameworks/CoreLocation.framework/CoreLocation
0x31ff2000 - 0x3218cfff MediaPlayer armv7s <3328573c20643b02806559249c749793> /System/Library/Frameworks/MediaPlayer.framework/MediaPlayer
0x308cf000 - 0x308cffff AdSupport armv7s <928773d2118a3ed6bd9c5221240e3bb8> /System/Library/Frameworks/AdSupport.framework/AdSupport
0x32f2b000 - 0x32f3afff StoreKit armv7s <624bb332f87d3fe39f0ad65aad01e337> /System/Library/Frameworks/StoreKit.framework/StoreKit
0x32e8e000 - 0x32ebcfff Security armv7s /System/Library/Frameworks/Security.framework/Security
0x30b3c000 - 0x30dc5fff AudioToolbox armv7s <34857809ffa936a7a38f667aaa8ba316> /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox
0x38e64000 - 0x38f62fff libobjc.A.dylib armv7s <1d499765d38c3c8fa92b363f529a02dd> /usr/lib/libobjc.A.dylib
0x3248f000 - 0x324e8fff MobileCoreServices armv7s /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices
0x32f3b000 - 0x32f7afff SystemConfiguration armv7s <0fb8d4a2fa8f30ce837e068a046e466b> /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration
0x39060000 - 0x390e6fff libsqlite3.dylib armv7s <758898189dca32a5a19e5200b8952110> /usr/lib/libsqlite3.dylib
0x309f0000 - 0x309fefff AssetsLibrary armv7s <7091433f62693f2c85b71242debab67c> /System/Library/Frameworks/AssetsLibrary.framework/AssetsLibrary
0x319d8000 - 0x31b9bfff Foundation armv7s <0f73c35ada563c0bb2ce402d282faefd> /System/Library/Frameworks/Foundation.framework/Foundation
0x31b9c000 - 0x31bc6fff GLKit armv7s /System/Library/Frameworks/GLKit.framework/GLKit
0x325d8000 - 0x325dffff OpenGLES armv7s /System/Library/Frameworks/OpenGLES.framework/OpenGLES
0x3169b000 - 0x31700fff CoreMedia armv7s <526b25ed6f4e31b790553bd80d46fec7> /System/Library/Frameworks/CoreMedia.framework/CoreMedia
0x30286000 - 0x3036cfff AVFoundation armv7s <56f22385ccb73e31863f1fa9e0b621dd> /System/Library/Frameworks/AVFoundation.framework/AVFoundation
0x30e8c000 - 0x30ee2fff CoreAudio armv7s <19aa715b19a93a5c8563dbc706e899be> /System/Library/Frameworks/CoreAudio.framework/CoreAudio
0x32408000 - 0x3248efff MessageUI armv7s <2fbfe798afe130cba7360b49d0ad487c> /System/Library/Frameworks/MessageUI.framework/MessageUI
0x3922d000 - 0x39239fff libz.1.dylib armv7s /usr/lib/libz.1.dylib
0x30dc6000 - 0x30e8bfff CFNetwork armv7s /System/Library/Frameworks/CFNetwork.framework/CFNetwork
0x32d2c000 - 0x32e40fff QuartzCore armv7s /System/Library/Frameworks/QuartzCore.framework/QuartzCore
0x30ef6000 - 0x310aefff CoreData armv7s /System/Library/Frameworks/CoreData.framework/CoreData
0x32f7d000 - 0x334d0fff UIKit armv7s <62bee9294ca13738bd7ff14365dc8561> /System/Library/Frameworks/UIKit.framework/UIKit
0x311e2000 - 0x3131bfff CoreGraphics armv7s /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics
0x390e7000 - 0x39133fff libstdc++.6.dylib armv7s <249e8ca1717b370287bb556bbd96e303> /usr/lib/libstdc++.6.dylib
0x38733000 - 0x38733fff libSystem.B.dylib armv7s <12daef214fd234158028c97c22dc5cca> /usr/lib/libSystem.B.dylib
0x310af000 - 0x311e1fff CoreFoundation armv7s /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
0x3923a000 - 0x3923dfff libcache.dylib armv7s <911ce99a94623ef1ae1ea786055fd558> /usr/lib/system/libcache.dylib
0x3923e000 - 0x39244fff libcommonCrypto.dylib armv7s <33140a5fa3fb3e5e8c6bb19bc0e21c5c> /usr/lib/system/libcommonCrypto.dylib
0x39245000 - 0x39247fff libcompiler_rt.dylib armv7s /usr/lib/system/libcompiler_rt.dylib
0x39248000 - 0x3924dfff libcopyfile.dylib armv7s <5e733170766430eeaa4e7784e3c7555c> /usr/lib/system/libcopyfile.dylib
0x39285000 - 0x39295fff libdispatch.dylib armv7s <247a388103633e17b24be038eac612c0> /usr/lib/system/libdispatch.dylib
0x39296000 - 0x39297fff libdnsinfo.dylib armv7s /usr/lib/system/libdnsinfo.dylib
0x39298000 - 0x39299fff libdyld.dylib armv7s /usr/lib/system/libdyld.dylib
0x3929a000 - 0x3929afff libkeymgr.dylib armv7s /usr/lib/system/libkeymgr.dylib
0x3929b000 - 0x392a0fff liblaunch.dylib armv7s <69dd64aba1413e75967cd4ad0afa2c15> /usr/lib/system/liblaunch.dylib
0x392a1000 - 0x392a4fff libmacho.dylib armv7s <5905b311c6fb376388e56a991bb3193d> /usr/lib/system/libmacho.dylib
0x392a5000 - 0x392a6fff libremovefile.dylib armv7s /usr/lib/system/libremovefile.dylib
0x392a7000 - 0x392a7fff libsystem_blocks.dylib armv7s <77a9976b82b73796a0bbc9783929a1e7> /usr/lib/system/libsystem_blocks.dylib
0x392a8000 - 0x3932efff libsystem_c.dylib armv7s <11bcf1060ec63c8b909a452e6f79be08> /usr/lib/system/libsystem_c.dylib
0x3932f000 - 0x39335fff libsystem_dnssd.dylib armv7s <94fab309ed9b35cdbc075cdda221bc70> /usr/lib/system/libsystem_dnssd.dylib
0x39336000 - 0x3934efff libsystem_info.dylib armv7s <195d8eeb7c3f31bd916c0b5611abc0e7> /usr/lib/system/libsystem_info.dylib
0x3934f000 - 0x39365fff libsystem_kernel.dylib armv7s /usr/lib/system/libsystem_kernel.dylib
0x39366000 - 0x39382fff libsystem_m.dylib armv7s /usr/lib/system/libsystem_m.dylib
0x39383000 - 0x39391fff libsystem_network.dylib armv7s <137f48e279a83d7496659c8e3d3729d4> /usr/lib/system/libsystem_network.dylib
0x39392000 - 0x39399fff libsystem_notify.dylib armv7s /usr/lib/system/libsystem_notify.dylib
0x3939a000 - 0x3939bfff libsystem_sandbox.dylib armv7s <85e91e99abc03db88eddc665424090b4> /usr/lib/system/libsystem_sandbox.dylib
0x3939c000 - 0x3939cfff libunwind.dylib armv7s <3b7ec561dbec3a199f09ea08a64e76ee> /usr/lib/system/libunwind.dylib
0x3939d000 - 0x393b2fff libxpc.dylib armv7s <0562a59bdf8d3f7783e93f35d7e724a8> /usr/lib/system/libxpc.dylib
0x3924e000 - 0x39284fff libcorecrypto.dylib armv7s /usr/lib/system/libcorecrypto.dylib
0x388b8000 - 0x388cbfff libc++abi.dylib armv7s /usr/lib/libc++abi.dylib
0x38b3e000 - 0x38b45fff liblockdown.dylib armv7s /usr/lib/liblockdown.dylib
0x337fe000 - 0x33801fff AggregateDictionary armv7s <52b69c81243d3e7ea280defa4802aa0f> /System/Library/PrivateFrameworks/AggregateDictionary.framework/AggregateDictionary
0x36488000 - 0x364c0fff Preferences armv7s /System/Library/PrivateFrameworks/Preferences.framework/Preferences
0x366a3000 - 0x366b4fff SpringBoardServices armv7s /System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices
0x31da0000 - 0x31f78fff ImageIO armv7s /System/Library/Frameworks/ImageIO.framework/ImageIO
0x38715000 - 0x38721fff libMobileGestalt.dylib armv7s <7cf3ae0983a830d1a5dc91edb216b3f8> /usr/lib/libMobileGestalt.dylib
0x33c2d000 - 0x33c68fff AppSupport armv7s <7d6122cb42363dc981247c926e637a34> /System/Library/PrivateFrameworks/AppSupport.framework/AppSupport
0x37b6e000 - 0x37b75fff XPCObjects armv7s /System/Library/PrivateFrameworks/XPCObjects.framework/XPCObjects
0x35761000 - 0x35763fff OAuth armv7s <8e91174312e43ca9ac07d91d16b32d15> /System/Library/PrivateFrameworks/OAuth.framework/OAuth
0x3554a000 - 0x35550fff MobileKeyBag armv7s <5c7d50e11eb537ae89ea12cb7ddd3935> /System/Library/PrivateFrameworks/MobileKeyBag.framework/MobileKeyBag
0x31d56000 - 0x31d9ffff IOKit armv7s <4e5e55f27bbb35bab7af348997bfac17> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x38855000 - 0x38861fff libbsm.0.dylib armv7s <0f4a8d65b05a364abca1a97e2ae72cb5> /usr/lib/libbsm.0.dylib
0x386e7000 - 0x386fdfff libCRFSuite.dylib armv7s <770ebb2f7d9a35749e6da5d1980c244f> /usr/lib/libCRFSuite.dylib
0x38b3b000 - 0x38b3bfff liblangid.dylib armv7s /usr/lib/liblangid.dylib
0x34b8b000 - 0x34b97fff GenerationalStorage armv7s <4e1afa8de682332ba6a042a6000c636e> /System/Library/PrivateFrameworks/GenerationalStorage.framework/GenerationalStorage
0x33ce5000 - 0x33cfefff AssistantServices armv7s <2c462750e071380b924dda7cd3d0fcb6> /System/Library/PrivateFrameworks/AssistantServices.framework/AssistantServices
0x37069000 - 0x3707ffff VoiceServices armv7s /System/Library/PrivateFrameworks/VoiceServices.framework/VoiceServices
0x34c92000 - 0x34c9dfff GraphicsServices armv7s <44b33c403523309c9e930818c7fced34> /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices
0x308d0000 - 0x30934fff AddressBook armv7s /System/Library/Frameworks/AddressBook.framework/AddressBook
0x35546000 - 0x35549fff MobileInstallation armv7s <7cbe167946123bbea56ae58208e09762> /System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation
0x3553e000 - 0x35545fff MobileIcons armv7s /System/Library/PrivateFrameworks/MobileIcons.framework/MobileIcons
0x352a5000 - 0x352fdfff ManagedConfiguration armv7s /System/Library/PrivateFrameworks/ManagedConfiguration.framework/ManagedConfiguration
0x36584000 - 0x365dcfff SAObjects armv7s /System/Library/PrivateFrameworks/SAObjects.framework/SAObjects
0x34fde000 - 0x34fe3fff IOMobileFramebuffer armv7s <828a36a2325738bb8f2d4b97730d253a> /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/IOMobileFramebuffer
0x34fe4000 - 0x34fe8fff IOSurface armv7s <9925fbc4a08d3a17b72ac807cbbba8ba> /System/Library/PrivateFrameworks/IOSurface.framework/IOSurface
0x3425a000 - 0x3425bfff CoreSurface armv7s <55826212d8b4352b87d80f93bc9b25c6> /System/Library/PrivateFrameworks/CoreSurface.framework/CoreSurface
0x38e26000 - 0x38e3bfff libmis.dylib armv7s <8f0712b99e8e3f5e998f0240f75bb5ba> /usr/lib/libmis.dylib
0x3620e000 - 0x3622bfff PersistentConnection armv7s /System/Library/PrivateFrameworks/PersistentConnection.framework/PersistentConnection
0x344f0000 - 0x344f1fff DataMigration armv7s <5e7169ad01853bd0ba0f66648a67a010> /System/Library/PrivateFrameworks/DataMigration.framework/DataMigration
0x33d14000 - 0x33d2bfff BackBoardServices armv7s <7fd28bde9e3b3a62a5758e9e859db9fb> /System/Library/PrivateFrameworks/BackBoardServices.framework/BackBoardServices
0x33f8f000 - 0x33f94fff CommonUtilities armv7s /System/Library/PrivateFrameworks/CommonUtilities.framework/CommonUtilities
0x33d35000 - 0x33d59fff Bom armv7s /System/Library/PrivateFrameworks/Bom.framework/Bom
0x355ad000 - 0x355b0fff MobileSystemServices armv7s <5796fff2895f38e4b0f844269d4fbae5> /System/Library/PrivateFrameworks/MobileSystemServices.framework/MobileSystemServices
0x38862000 - 0x3886bfff libbz2.1.0.dylib armv7s /usr/lib/libbz2.1.0.dylib
0x36cf2000 - 0x36d92fff UIFoundation armv7s /System/Library/PrivateFrameworks/UIFoundation.framework/UIFoundation
0x31844000 - 0x31853fff CoreVideo armv7s <851591a704dc344aa2fc397094b4c622> /System/Library/Frameworks/CoreVideo.framework/CoreVideo
0x334d1000 - 0x33510fff VideoToolbox armv7s <57487f6e3c38304ab0aa14dd16043f5c> /System/Library/Frameworks/VideoToolbox.framework/VideoToolbox
0x354d4000 - 0x35501fff MobileAsset armv7s /System/Library/PrivateFrameworks/MobileAsset.framework/MobileAsset
0x36860000 - 0x3686dfff TelephonyUtilities armv7s /System/Library/PrivateFrameworks/TelephonyUtilities.framework/TelephonyUtilities
0x37096000 - 0x370b5fff WebBookmarks armv7s /System/Library/PrivateFrameworks/WebBookmarks.framework/WebBookmarks
0x31558000 - 0x3160dfff CoreImage armv7s <7d7cd7998a113ed9b483e7dc9f388b05> /System/Library/Frameworks/CoreImage.framework/CoreImage
0x344f4000 - 0x3450dfff DictionaryServices armv7s <27298e235f2c35938e1033517b1196a7> /System/Library/PrivateFrameworks/DictionaryServices.framework/DictionaryServices
0x379e7000 - 0x37ac3fff WebKit armv7s <6bd57205f7a43f6eb49f3037b57cc5f6> /System/Library/PrivateFrameworks/WebKit.framework/WebKit
0x370b6000 - 0x379e6fff WebCore armv7s /System/Library/PrivateFrameworks/WebCore.framework/WebCore
0x364ea000 - 0x3655efff ProofReader armv7s /System/Library/PrivateFrameworks/ProofReader.framework/ProofReader
0x386e0000 - 0x386e6fff libAccessibility.dylib armv7s <9111bc894a4f3ef683f5ef4d699a861b> /usr/lib/libAccessibility.dylib
0x3036d000 - 0x3036dfff Accelerate armv7s /System/Library/Frameworks/Accelerate.framework/Accelerate
0x364c1000 - 0x364e9fff PrintKit armv7s <7109f645a9ca3a4997b4172aed228723> /System/Library/PrivateFrameworks/PrintKit.framework/PrintKit
0x3886c000 - 0x388b7fff libc++.1.dylib armv7s <3beff5a5233b3f51ab2fc748b68e9519> /usr/lib/libc++.1.dylib
0x325e8000 - 0x325ecfff libGFXShared.dylib armv7s <272a9de67f6632c3aebbe2407cfe716b> /System/Library/Frameworks/OpenGLES.framework/libGFXShared.dylib
0x34fdc000 - 0x34fddfff IOAccelerator armv7s <832913083f7f347fba1340263ff13b52> /System/Library/PrivateFrameworks/IOAccelerator.framework/IOAccelerator
0x325ed000 - 0x3262cfff libGLImage.dylib armv7s <3a444257935236fab123e46e617c7a8d> /System/Library/Frameworks/OpenGLES.framework/libGLImage.dylib
0x325e1000 - 0x325e1fff libCVMSPluginSupport.dylib armv7s /System/Library/Frameworks/OpenGLES.framework/libCVMSPluginSupport.dylib
0x342c8000 - 0x342cdfff CrashReporterSupport armv7s <3b190badb14f3771b353fcd829719c80> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/CrashReporterSupport
0x33cdb000 - 0x33ce4fff AssetsLibraryServices armv7s /System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices
0x3683f000 - 0x36841fff TCC armv7s <95c2aa492cc03862bd7bbfae6fa62b1b> /System/Library/PrivateFrameworks/TCC.framework/TCC
0x34f89000 - 0x34fd5fff IMFoundation armv7s <55151f53b10934c3a5faac54e354f3f1> /System/Library/PrivateFrameworks/IMFoundation.framework/IMFoundation
0x39134000 - 0x3915afff libtidy.A.dylib armv7s <96b463f0ffa0344699fce4d48aa623bc> /usr/lib/libtidy.A.dylib
0x35032000 - 0x351d9fff JavaScriptCore armv7s /System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore
0x3036e000 - 0x304abfff vImage armv7s <49d3cf19d0a23f4d836fc313e5fd6bab> /System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage
0x308bc000 - 0x308bcfff vecLib armv7s <30275ee8819331229ba21256d7b94596> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/vecLib
0x30850000 - 0x308a8fff libvDSP.dylib armv7s <936354553eb93d2dafa76ffcad65f9b7> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/libvDSP.dylib
0x30599000 - 0x3084ffff libLAPACK.dylib armv7s <30a3e7dd8c603a9d81b5e42704ba5971> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/libLAPACK.dylib
0x304ac000 - 0x30598fff libBLAS.dylib armv7s <584e045442be39fc847ffe1a5e4c99b2> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/libBLAS.dylib
0x308a9000 - 0x308bbfff libvMisc.dylib armv7s <5fae8715a0403315bb1991b79677f916> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/libvMisc.dylib
0x35e88000 - 0x35eacfff OpenCL armv7s <9fb5ca4c594c3ae8baf7e0b0c299733b> /System/Library/PrivateFrameworks/OpenCL.framework/OpenCL
0x34580000 - 0x34993fff FaceCoreLight armv7s <432cbaeb84743441b9286532bc36c96d> /System/Library/PrivateFrameworks/FaceCoreLight.framework/FaceCoreLight
0x325e5000 - 0x325e7fff libCoreVMClient.dylib armv7s <8bcac434962435a895fa0b0a3a33b7a1> /System/Library/Frameworks/OpenGLES.framework/libCoreVMClient.dylib
0x3920c000 - 0x3922cfff libxslt.1.dylib armv7s /usr/lib/libxslt.1.dylib
0x388fc000 - 0x389e9fff libiconv.2.dylib armv7s <81d6972465103fa3b85b4125f0ad33f1> /usr/lib/libiconv.2.dylib
0x39026000 - 0x3903bfff libresolv.9.dylib armv7s <3f7be9d397d63b8e931d21bd5f49b0eb> /usr/lib/libresolv.9.dylib
0x3449f000 - 0x344b1fff DataAccessExpress armv7s <53ef646b265b3f5e944059baa19499c6> /System/Library/PrivateFrameworks/DataAccessExpress.framework/DataAccessExpress
0x337a6000 - 0x337b2fff AccountSettings armv7s /System/Library/PrivateFrameworks/AccountSettings.framework/AccountSettings
0x3639d000 - 0x36484fff PhotoLibraryServices armv7s <21e6076b32a33d24a298e1e611e4b965> /System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices
0x38713000 - 0x38714fff libMobileCheckpoint.dylib armv7s <1a85f881364934cb88fa6a38a1396cb0> /usr/lib/libMobileCheckpoint.dylib
0x340c5000 - 0x341adfff CoreMediaStream armv7s <8e681121a5b93a4585e3016d4320b989> /System/Library/PrivateFrameworks/CoreMediaStream.framework/CoreMediaStream
0x35395000 - 0x353a9fff MediaStream armv7s /System/Library/PrivateFrameworks/MediaStream.framework/MediaStream
0x33de1000 - 0x33eabfff Celestial armv7s /System/Library/PrivateFrameworks/Celestial.framework/Celestial
0x366b5000 - 0x366c9fff SpringBoardUI armv7s /System/Library/PrivateFrameworks/SpringBoardUI.framework/SpringBoardUI
0x3218d000 - 0x32407fff MediaToolbox armv7s <1b36b1b41eca35989d2e822240a769cf> /System/Library/Frameworks/MediaToolbox.framework/MediaToolbox
0x33c69000 - 0x33c8dfff AppleAccount armv7s <668e780f91163aaca1c36294d702ae50> /System/Library/PrivateFrameworks/AppleAccount.framework/AppleAccount
0x35241000 - 0x35277fff MMCS armv7s <9d17ce9507cd38c9b8246e9c96b6ba3e> /System/Library/PrivateFrameworks/MMCS.framework/MMCS
0x33f62000 - 0x33f7bfff ChunkingLibrary armv7s /System/Library/PrivateFrameworks/ChunkingLibrary.framework/ChunkingLibrary
0x33c9a000 - 0x33ca7fff ApplePushService armv7s <4638fab5719a3007beca5a798aa69e91> /System/Library/PrivateFrameworks/ApplePushService.framework/ApplePushService
0x37b67000 - 0x37b6dfff XPCKit armv7s <25b9d317096e354b885dce46498daa54> /System/Library/PrivateFrameworks/XPCKit.framework/XPCKit
0x3527f000 - 0x35289fff MailServices armv7s <737ace3c1c7c3ec6923095f3beadb4b2> /System/Library/PrivateFrameworks/MailServices.framework/MailServices
0x34b98000 - 0x34c91fff GeoServices armv7s <12d1626ed0f733d7bacca40380622f99> /System/Library/PrivateFrameworks/GeoServices.framework/GeoServices
0x3655f000 - 0x36567fff ProtocolBuffer armv7s /System/Library/PrivateFrameworks/ProtocolBuffer.framework/ProtocolBuffer
0x354c9000 - 0x354cbfff MessageSupport armv7s <486898b0125530959b21b7c38b1d0252> /System/Library/PrivateFrameworks/MessageSupport.framework/MessageSupport
0x31701000 - 0x31789fff CoreMotion armv7s /System/Library/Frameworks/CoreMotion.framework/CoreMotion
0x35314000 - 0x3538afff MediaControlSender armv7s <29ff7ec2b02d36ec8bf6db33c3a4ba8e> /System/Library/PrivateFrameworks/MediaControlSender.framework/MediaControlSender
0x36716000 - 0x367f1fff StoreServices armv7s /System/Library/PrivateFrameworks/StoreServices.framework/StoreServices
0x355c8000 - 0x355d1fff MobileWiFi armv7s /System/Library/PrivateFrameworks/MobileWiFi.framework/MobileWiFi
0x33dd9000 - 0x33de0fff CaptiveNetwork armv7s /System/Library/PrivateFrameworks/CaptiveNetwork.framework/CaptiveNetwork
0x34515000 - 0x3452dfff EAP8021X armv7s <25f0f325ef0c3c6f987b75b0bb6d1dd1> /System/Library/PrivateFrameworks/EAP8021X.framework/EAP8021X
0x36842000 - 0x3685ffff TelephonyUI armv7s <2ed4ebd30fa3375fa4eddb13573855d2> /System/Library/PrivateFrameworks/TelephonyUI.framework/TelephonyUI
0x33d6c000 - 0x33d9bfff BulletinBoard armv7s /System/Library/PrivateFrameworks/BulletinBoard.framework/BulletinBoard
0x36c95000 - 0x36cc3fff ToneLibrary armv7s /System/Library/PrivateFrameworks/ToneLibrary.framework/ToneLibrary
0x30935000 - 0x309effff AddressBookUI armv7s /System/Library/Frameworks/AddressBookUI.framework/AddressBookUI
0x342c3000 - 0x342c7fff CoreTime armv7s /System/Library/PrivateFrameworks/CoreTime.framework/CoreTime
0x338ea000 - 0x338fdfff AirTraffic armv7s /System/Library/PrivateFrameworks/AirTraffic.framework/AirTraffic
0x37e1a000 - 0x37e52fff iTunesStore armv7s <10c8c7e5c9f43f75af5b30fc2389c1a2> /System/Library/PrivateFrameworks/iTunesStore.framework/iTunesStore
0x34d88000 - 0x34d92fff IAP armv7s /System/Library/PrivateFrameworks/IAP.framework/IAP
0x355eb000 - 0x3572ffff MusicLibrary armv7s <057b076c74fd31b590bccc9b64d7f5cb> /System/Library/PrivateFrameworks/MusicLibrary.framework/MusicLibrary
0x3538b000 - 0x35394fff MediaRemote armv7s <0dc7c7c324d33af8b2f7d57f41123de9> /System/Library/PrivateFrameworks/MediaRemote.framework/MediaRemote
0x34d0c000 - 0x34d87fff HomeSharing armv7s <137c1fbc6a843d369038348255635111> /System/Library/PrivateFrameworks/HomeSharing.framework/HomeSharing
0x3374d000 - 0x33752fff AITTarget armv7s /System/Library/PrivateFrameworks/AITTarget.framework/AITTarget
0x37cc8000 - 0x37d03fff iCalendar armv7s /System/Library/PrivateFrameworks/iCalendar.framework/iCalendar
0x3453c000 - 0x34540fff FTClientServices armv7s /System/Library/PrivateFrameworks/FTClientServices.framework/FTClientServices
0x35407000 - 0x354c0fff Message armv7s <65a2ce3df80c32ca95304333d445d85a> /System/Library/PrivateFrameworks/Message.framework/Message
0x342ce000 - 0x3430afff DataAccess armv7s <1e17dda3378b34989757d122cb70f8ad> /System/Library/PrivateFrameworks/DataAccess.framework/DataAccess
0x3520a000 - 0x35240fff MIME armv7s /System/Library/PrivateFrameworks/MIME.framework/MIME
0x32e41000 - 0x32e8dfff QuickLook armv7s <2350b507fe1b3a1a94d2824e34649b36> /System/Library/Frameworks/QuickLook.framework/QuickLook
0x34e4a000 - 0x34ec2fff IMCore armv7s /System/Library/PrivateFrameworks/IMCore.framework/IMCore
0x352fe000 - 0x35303fff Marco armv7s <53ab26b3197135a781d55819fd80f032> /System/Library/PrivateFrameworks/Marco.framework/Marco
0x34541000 - 0x3457ffff FTServices armv7s <71ca9253aee730eca6c4ca3210861a2c> /System/Library/PrivateFrameworks/FTServices.framework/FTServices
0x33eb8000 - 0x33ebcfff CertUI armv7s <98e5a166bb473fa9b2840dfdad00580a> /System/Library/PrivateFrameworks/CertUI.framework/CertUI
0x337f9000 - 0x337fcfff ActorKit armv7s <3aa66a29d9343626baa9d63d1a6efc14> /System/Library/PrivateFrameworks/ActorKit.framework/ActorKit
0x35589000 - 0x355acfff MobileSync armv7s <8ea08ca56ead3d77bba046811a917f79> /System/Library/PrivateFrameworks/MobileSync.framework/MobileSync
0x35747000 - 0x35760fff Notes armv7s /System/Library/PrivateFrameworks/Notes.framework/Notes
0x3552e000 - 0x3553dfff MobileDeviceLink armv7s /System/Library/PrivateFrameworks/MobileDeviceLink.framework/MobileDeviceLink
0x34019000 - 0x34049fff ContentIndex armv7s <7a304e48f6213864820081df620939e9> /System/Library/PrivateFrameworks/ContentIndex.framework/ContentIndex
0x350a000 - 0x350efff AccessibilitySettingsLoader armv7s /System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader
0x33784000 - 0x337a5fff AccessibilityUtilities armv7s <6ba5de67ad0c31bb97f83b34643a7dad> /System/Library/PrivateFrameworks/AccessibilityUtilities.framework/AccessibilityUtilities
0x3131d000 - 0x31358fff libCGFreetype.A.dylib armv7s <163d7f8309a6350399bbb1fef6cde32c> /System/Library/Frameworks/CoreGraphics.framework/Resources/libCGFreetype.A.dylib
0x3153c000 - 0x31557fff libRIP.A.dylib armv7s <387d00a9ed55303b8936459a99869e07> /System/Library/Frameworks/CoreGraphics.framework/Resources/libRIP.A.dylib
0x3423c000 - 0x34259fff CoreServicesInternal armv7s <373f1c58aee834698fb2e7b18660e870> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/CoreServicesInternal
0x3002e000 - 0x30049fff libJapaneseConverter.dylib armv7s <05686f07f0da3fdf8d039e3a3706b30e> /System/Library/CoreServices/Encodings/libJapaneseConverter.dylib
0x344dc000 - 0x344effff DataDetectorsUI armv7s <1111beb447bb3fee9f49bed184793e2b> /System/Library/PrivateFrameworks/DataDetectorsUI.framework/DataDetectorsUI
0x344c5000 - 0x344dafff DataDetectorsCore armv7s <4c8d091a0b7f3260853ba0347236ee30> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/DataDetectorsCore
0x32515000 - 0x325d7fff GLEngine armv7s <0c748add2f663d76a29f23fa8a2b5fbc> /System/Library/Frameworks/OpenGLES.framework/GLEngine.bundle/GLEngine
0x3262d000 - 0x32754fff libGLProgrammability.dylib armv7s <252e8c85f6f5374ba6b2690f7fc0e9c3> /System/Library/Frameworks/OpenGLES.framework/libGLProgrammability.dylib
0x30172000 - 0x3027cfff IMGSGX543RC2GLDriver armv7s /System/Library/Extensions/IMGSGX543RC2GLDriver.bundle/IMGSGX543RC2GLDriver
0x325e2000 - 0x325e4fff libCoreFSCache.dylib armv7s <07390837fcda347e827279534d046989> /System/Library/Frameworks/OpenGLES.framework/libCoreFSCache.dylib
0x349e0000 - 0x349e5fff libGPUSupportMercury.dylib armv7s <64ed3952bc683fef8a42a60ad7bf3f8c> /System/Library/PrivateFrameworks/GPUSupport.framework/libGPUSupportMercury.dylib
0x30097000 - 0x30169fff RawCamera armv7s <3c08cb817a1132538a799beafa075302> /System/Library/CoreServices/RawCamera.bundle/RawCamera
0x38106000 - 0x38117fff TextInput_ja armv7s /System/Library/TextInput/TextInput_ja.bundle/TextInput_ja
0x3686e000 - 0x36c94fff TextInput armv7s <42f00d191694378fb1343b6d3c15e022> /System/Library/PrivateFrameworks/TextInput.framework/TextInput
0x38c82000 - 0x38e25fff libmecabra.dylib armv7s <3b39df1d195d3feaa9c268fcedd3a2f8> /usr/lib/libmecabra.dylib
0x38b78000 - 0x38c81fff libmecab_em.dylib armv7s <1c4b0af073683641b5ccda10867a6a1c> /usr/lib/libmecab_em.dylib
0x33528000 - 0x3353cfff QuickTime Plugin armv7s <617c54d474be37b686bc51bdac30e129> /System/Library/Internet Plug-Ins/QuickTime Plugin.webplugin/QuickTime Plugin
0x34de0000 - 0x34e49fff IMAVCore armv7s <78a21c381d173ce6b17cee820dd2dbf7> /System/Library/PrivateFrameworks/IMAVCore.framework/IMAVCore
0x3502d000 - 0x35031fff IncomingCallFilter armv7s <8624065e862b3cc7b03b6635181ce2cf> /System/Library/PrivateFrameworks/IncomingCallFilter.framework/IncomingCallFilter

Extra Information:

Stack Dump (0x0c340cd0-0x0c340d48):

6F010000000102800304058006070880090A0B80000000FF000000FF000000FF000000FF9D000063F36C0000140D340C3DBB7900200D340C6B333139FFFFFFFF11AD2D39DFFFFFFF400D340C3A000000400D340C113E2F3974BB79003A000000F0360724C063D9242020571FC47EA500700D340C2DF21600

Notable Addresses:
{
"r10": {
"address": 545918816,
"class": "NSURL",
"last_deallocated_obj": "NSInvocation",
"type": "objc_object",
"value": ""
},
"r11": {
"address": 604452592,
"class": "__NSCFString",
"type": "objc_object",
"value": "進撃の巨人 15話.mp4"
},
"r5": {
"address": 204738560,
"type": "string",
"value": "DRHT"
},
"r6": {
"address": 7977932,
"type": "string",
"value": "[[NSFileManager defaultManager] fileExistsAtPath: [URL path]]"
},
"r8": {
"address": 7977844,
"type": "string",
"value": "/Users/XiangZi/Project/VideoDownloader/VideoDownloader/shared/Models/ILSVDFileManager.m"
},
"stack@0xc340d00": {
"address": 7977789,
"type": "string",
"value": "+[ILSVDFileManager addSkipBackupAttributeToItemAtURL:]"
},
"stack@0xc340d28": {
"address": 7977844,
"type": "string",
"value": "/Users/XiangZi/Project/VideoDownloader/VideoDownloader/shared/Models/ILSVDFileManager.m"
},
"stack@0xc340d30": {
"address": 604452592,
"class": "__NSCFString",
"type": "objc_object",
"value": "進撃の巨人 15話.mp4"
},
"stack@0xc340d34": {
"address": 618226624,
"class": "__NSCFString",
"last_deallocated_obj": "__NSArrayM",
"type": "objc_object",
"value": "/var/mobile/Applications/203C83D4-2208-4D23-B6B2-BB565F7841D2/Documents/進撃の巨人 15話.mp4"
},
"stack@0xc340d38": {
"address": 525803552,
"class": "NSFileManager",
"ivars": {},
"type": "objc_object"
},
"stack@0xc340d3c": {
"address": 10845892,
"class": "ILSVDFileManager",
"type": "objc_class"
}
}

iOS 7 and XCode 5 Compatibility

First of all I want to thank you for your amazing job in this framework.

But when I migrated to XCode 5 I realized there was an error with de compiling script. The error appears at line 790 when it tried to get the PLATFORM_NAME from os.enviroment.

I hope the image explains itself.

screen shot 2013-10-14 at 5 45 35 am

Although thanks for your job.

Cannot compile lib without support of armv7s

If user-own project supports only armv7, there is "KSCrashLib" target compilation error in method

  • (NSString*) CPUArchForMajor:(int) majorCode minor:(int) minorCode;

To fix it, one should use:

ifdef CPU_SUBTYPE_ARM_V7S

            case CPU_SUBTYPE_ARM_V7S:
                return @"armv7s";

endif

Please, generalize approach for all architectures.

Expose - (KSCrashReportStore *)crashReportStore;

It would be very useful to expose crashReportStore to public interface.

...

import "KSCrash.h"

/** Advanced interface to the KSCrash system.
*/
@interface KSCrash ()

....

/** Store of all crash reports.
*
*/

  • (KSCrashReportStore *)crashReportStore;

...

Cannot install email sink correctly

I'm trying to setup the crash reporter with email send support. The code used is the following:

id sink = [KSCrashReportSinkEMail sinkWithRecipients:@[@"[email protected]"] subject:@"Crash report from Test App" filenameFmt:@"crashLog"];
[KSCrash installWithCrashReportSink:sink];

The crash reporter fails installation, with the following console log:

KSCrash: App is running in a debugger. Crash handlers have been disabled for the sanity of all.
2013-02-27 16:14:36.887 TestAtooma[15498:907] -[__NSDictionaryM safeSetObject:forKey:]: unrecognized selector sent to instance 0x1d84e350
2013-02-27 16:14:36.891 TestAtooma[15498:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryM safeSetObject:forKey:]: unrecognized selector sent to instance 0x1d84e350'
*** First throw call stack:
(0x320253e7 0x39d16963 0x32028f31 0x3202764d 0x31f7f208 0x1ae13 0x1b283 0x175e7 0xd0fb 0xd871 0xd78b 0xc999 0x33e94aa1 0x33e94625 0x33e8c833 0x33e34d1f 0x33e347ad 0x33e341ef 0x35b4b5f7 0x35b4b227 0x31ffa3e7 0x31ffa38b 0x31ff920f 0x31f6c23d 0x31f6c0c9 0x33e8b46d 0x33e882b9 0xc8df 0x3a143b20)
libc++abi.dylib: terminate called throwing an exception

Any clues?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.