Spot the error:
uuid_t uuid_now;
uuid_generate(uuid_now);
char *uuid_cstr;
uuid_unparse_lower(uuid_now,uuid_cstr);
The error is that uuid_cstr is not initialized. I was writing the original code up to uuid_unparse_lower by hand but then I got lazy and googled, and found that yeah, it was done that way. What I missed was that in every instance this was shown, they were using char uuid_cstr[37] and were thus actually initializing their string^Wchar array — 36 chars + the null — while I was just declaring a pointer.
This all boils down to that packing up services worked great in ThisService, provided you were lucky and the program ran in pre-zeroed space, or the application wouldn’t, when this was turned into a string seconds later, find the null string terminator and crash and burn horribly.
Whoops.
I fixed this (by also forgoing it for CFUUID) and, humble from experience and eager to shoot down anything else pre-emptively, ran and reran the wonderful clang static analysis program — earlier in the week that just ended, I proposed the name “clunk” but am now coming around to “mechanical Hosey” as well — on the source code for about an hour until most kinks were worked out. Then I updated some web pages in which process is still as embarrassingly manual as is the “memory management” in most Objective-C applications (unless you write only 10.5 applications), and I uploaded a new version and slapped “2.0.2″ to the side of it.
Moreover, I advise that the iPhone software platform must be opened.