September 02, 2005
Smart Crash Reports!

If you're a Mac developer, have you ever wanted CrashReporter.app to work for your applications so you can receive these crash logs and act appropriately, fixing the bug in question in a timely manner? So have we. And I think we now have something to show you that may fulfill that exact wish...

Say hello to Smart Crash Reports! This is a project we're been working on over past few days, and I think it has some potential. Now, what exactly are Smart Crash Reports?

Smart Crash Reports is an enhancement for the Apple's CrashReporter application introduced in Mac OS X 10.4. It allows 3rd party developers to enhance CrashReporter in a way that if it determines that the crash is likely attributed to the 3rd party application, the crash log will be sent to the developer as well as Apple. This enhances the user experience of the OS, and allows developers to receive crashes and improve their software in a timely manner.

Smart Crash Reports requires no Application Enhancer or similar "patching" frameworks users have to install; they operate on the InputManager mechanism that is built-in Mac OS X. Which means, only Smart Crash Reports has to be installed, and it does not require Administrator privileges.

Smart Crash Reports is completely free to use for both users and developers; The plan is Unsanity will be providing it as a service to the community.

Now, what does this means to the casual user? Let's pretend some application crashes on them:

CrashBoomBang.png

User clicks Report..., and Smart Crash Reports kicks in, analyzes the crashed thread and notices that "com.unsanity." is in it, which means the crash is related to us (we have previously registered ourselves with the Smart Crash Reports to tell it about it). So the user gets this:

Smart Crash Reports gives user the opportunity to send you, the developer, the crash log, so you can look at it, take some action, and possibly fix a bug in your product! Note that if Smart Crash Reports cannot find the "source" of the problem, Crash Reporter window looks and acts exactly like before ("Send to Apple...", etc).

Now how would a developer receive these crash logs? We've created two ways to do it for you: either you get them sent to the e-mail you provide, or you implement your own Web CGI script that processes the reports right on your server. It's up to you.

Why do I post it here? I'd like you, the developers, to try it out. I'd also like you, our users, to try it out as well - tell us what you think, what are we doing wrong, do you like it or not, and everything like that. Help us out by letting us know how to improve it and what you think of the idea before it hits 1.0.

Now, the pointers!


  • Developer Documentation (how to use and adopt Smart Crash Reports for your products)
  • Smart Crash Reports 1.0b3.dmg - The installer of beta of Smart Crash Reports (~350K) (see this post for the latest beta)
  • Sample BombApp.app, that will crash and trigger Smart Crash Reports (BombApp has com.unsanity. identifier, so it will be treated as an Unsanity crash log when it crashes).

Please give us your feedback!

UPDATE 09/13: Beta 6 (FC) is out!

Digg This!

 Posted by slava at September 02, 2005 08:37 AM

Trackback Pings:

TrackBack URL for this entry:
http://www.unsanity.org/mt-tb.cgi/334.

Listed below are links to weblogs that reference Smart Crash Reports!:

Unsanity introduces Smart Crash Reports from MacMegasite
Smart Crash Reports is an enhancement for the Apple's CrashReporter application introduced in Mac OS X 10.4. It allows 3rd party developers to enhance CrashReporter in a way that if it determines that the crash is likely attributed to the 3rd party applic[Read More]

Tracked on September 2, 2005 10:46 AM

Smart Crash Reports from NSLog();
Leave it to Unsanity. Earlier this year I mentioned in a QotD that I was "still hoping Apple provides a way for an application to provide contact information for the developer so that we, not frickin' Apple, get the crash...[Read More]

Tracked on September 6, 2005 6:20 AM

Of Smart Crash Reports from DrunkenBlog
As it turns out, my embargo is generally worthless, because no one is paying it any heed. Earlier today, Rosyna passed on their new treat called Smart Crash Reports, along with some screenshots. "I'm embargo'd" I said, and then realized I was forwardin...[Read More]

Tracked on September 8, 2005 7:42 PM




Related:
Comments

Tremendous, brilliant, and as always, here's Slava enhancing and making Mac OS X better than Apple can. Thanks!

Posted by: macg on September 2, 2005 9:30 AM

Finally! Thanks Unsanity, this is absolutely amazing!

Posted by: Jean-Francois Roy on September 2, 2005 9:58 AM

Is there any way I can avoid the "email ticket" with Unsanity? I don't mind it, but the higher-ups will. I can provide my own server, no problem there...

Posted by: Philippe Casgrain on September 2, 2005 10:20 AM

Silly me... I printed the docs to read them, and there it is: if I provide my own CGI web server, I don't need to register inSubmissionEmailTicket. So there!

Posted by: Philippe Casgrain on September 2, 2005 10:32 AM

The email ticket is only required if you want the crash logs emailed to you. You don't need it if your web server will process the log itself. See http://www.unsanity.org/slava/smartcrashreports/Functions/Functions.html#//apple_ref/c/func/UnsanitySCR_RegisterMatchSpecifier for more information.

The email ticket is required for emails because there is no way to send the email from the user's computer so it has to be "redirected".

Posted by: Rosyna on September 2, 2005 10:32 AM

Sweet idea. Apple should have thought of something like this (a long time ago). Now just figure out a way for third parties to make use of Software Update ;)

Posted by: Twist on September 2, 2005 11:28 AM

Is there a way to know wich application are recognized by the smart reporter?

Posted by: Andrea on September 2, 2005 12:23 PM

Sounds like a fantastic idea, but not terribly useful unless you can get your average joe users to install it. The alternative would be to use an installer for your application that installs Smart Crash Reports as well, but that's not desirable.

Posted by: Kevin Ballard on September 2, 2005 2:32 PM

While this can help third party developers, PLEASE send the crash logs to Apple as well as the 3rd party developer. Just because NotAnAppleAppX.app crashes, it still may have been caused by a problem in Apple's libraries. Not receiving these reports makes those situations much harder to find.

Posted by: Frogblast on September 4, 2005 7:00 PM

The Ventcore, it will. The Send to Apple button will disappear and it will always send to both. It was realized after b1 one how to do this so it isn't in b1.

Posted by: Rosyna on September 4, 2005 7:03 PM

An InputManager plugin to send crash emails to the developer? Why didn't I think of that?

http://mikezornek.com/blog/etc/ADHOC_2004_showcase_notes.txt

Oh, I did! :) Good to see that you're running with the idea. I never really had the balls.

Posted by: Avi Drissman on September 4, 2005 7:35 PM

Brilliant idea! I've always tried to send the reports whenever a crash occurs. Now I know that this will reach the correct people (e.g. the developer)

1. Can we have it send to both Apple and Developer?
2. Can we save the report and send it later?

Posted by: XCool on September 5, 2005 2:13 AM

XCool:

1. Yes; Implemented that in 1.0b3.
2. How do you envision this process?

Posted by: slava on September 5, 2005 8:49 AM

As a developer, I'd be very wary of adding something like this to my user's systems - it automatically injects unknown (to me, at least) code into every running Cocoa application. Releasing it as open source would make it a lot less scary, since I would be able to see exactly what it's doing.

Posted by: Ian on September 5, 2005 11:32 PM

Ian, this is the code that will be executed in every Cocoa application:

- init
{
if (self=[super init])
{
NSString* bundleID = [[NSBundle mainBundle] bundleIdentifier];

if (bundleID && [bundleID isEqualToString:@"com.apple.CrashReporter"])
{
sSCRBundle = [[NSBundle bundleForClass:[self class]] retain];
if (!sSCR)
sSCR = self;
[self install];
}
}
return self;
}

As you can see, if the application is NOT CrashReporter, then no other code will be executed in any other process.

Do you see any bugs in the only code that will execute in third party applications?

Posted by: Rosyna on September 6, 2005 2:41 AM

". . . here's Slava enhancing and making Mac OS X better than Apple can. Thanks!"

That seems rather offensive and without veracity.

I don't see Unsanity writing an /entire OS/ but I don't say that Apple's making a better OS than Unsanity can.

Posted by: someone on September 11, 2005 11:31 AM

As a total NON-Developer (total average joe user, re: Kevin Ballard Sept. 2nd post), why COULDN'T this be rolled into developer's application installers? It can check for a pre-existing version, installing itself if newer. Licensed out to developers, It could become ubiquitous, much as Allume Systems' (nee Aladdin) Installer Vise of OS9 heritage. Us Average-Joe-Users wouldn't have to seek it out, hunt it down, wonder what we were downloading and installing. Our favorate apps (and by extension: admired developers) would vouch for it, provide it for us and educate us in its importance. Perhaps this is also an argument for open-sourcing it, relying on your generousity of spirit. No doubt there's a laundry list of issues I'm unfamiliar with in proposing this, but the thought of it struck me almost immediately, less than half-way through DrunkenBlog's article on it (which sent me here). Come to think of it, perhaps I'll post this there, too.

For what it's worth, I run OSX 10.4.2 on a 400 MHz Blue & White, where it crashes all the time (BRAND new install, no haxies, mods or alterations, clean and basic) and on a new 1.67 GHz 17" pBook, factory install, where it's stable, predictable, works-as-it-should (also no mods). For our B&W, I'd be sending out Crash Reports like mad (and did, to Apple all through May '05)!

Posted by: Bob on September 12, 2005 9:43 AM

Uhm, it can be rolled into developer's application installers. We've made an API to ease with this as well. And Installer Vise is made by MindVision, not Aladdin.

Posted by: Rosyna on September 12, 2005 9:47 AM

I am not happy that the Fruitmenu 3.4.2 installer *also* installs Smart Crash Reports, without any advance warning. The Fruitmenu documentation does not mention SCR.

Posted by: Jon Thaler on September 24, 2005 3:13 PM

When I am asked to install SmartCrash, I keep saying no and also check the box not to ask me again... and it keeps asking me. Can you post how to uninstall or permanently disable it?

Posted by: Todd on July 24, 2006 7:47 PM

I have the same problem as Todd. It keeps asking me even after I tell it not to install and don't ask me again. It refuses to listen! What is this, spyware or nagware?

Posted by: Brian on July 27, 2006 5:52 PM

Nag, nag, nag, nag, nag screen.

Day after day after day after day after day.

I check "Don't ask again". I click "Do Not Install".

But this is ignored by you're supremely ignorant and user unfriendly malware.

For f**ks sake someone! FIX THIS PIECE OF SH*T!

Posted by: Asterion on August 18, 2006 5:11 PM

ditto above - this shitty software asks me everytime if i want to install it, regardles of whether i click 'dont ask me again' or not!

Posted by: matt on April 24, 2008 8:38 AM

Ditto. How can I get rid of this annoying thing? Every time I startup my Mac I get this nag screen - no matter what. I did not ask for this to be installed and I want rid of it.

Unsanity - answer the countless people on these threads who are asking the same question instead of just ignoring us.

Posted by: Toby on May 26, 2008 5:42 AM
Post a comment
Keep comments on topic. If a comment is unrelated to this post, it may be removed or moderated.





Remember Me?

(you may use HTML tags for style)