If I use -[NSView dataWithPDFInsideRect:] to create a PDF from an NSTextView, I get a single-page PDF with stuff past the bottom cut off. What do I need to do to get pagination to happen? Would embedding the NSTextView in an NSScrollView help?
Post
Replies
Boosts
Views
Activity
Is there a correct way to archive a dynamic library in Xcode? When I try it, Xcode produces a "Generic Xcode Archive", and there is no option to notarize. The article TN3110: Resolving generic Xcode archive issue seems to be all about archiving an app.
Why is it that I can open a symbolic link, but can't read it? I am aware that I can get the contents of a symlink file using the readlink function, but still, it seems like this ought to work. Here's example code:
#include <iostream>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, const char * argv[])
{
// Make sure there is not already a file where we will create the link
unlink( "/tmp/ReadSymLink-test" );
// Create a symlink
int result = symlink( "../usr", "/tmp/ReadSymLink-test");
int err;
if (result == 0)
{
std::cout << "created file /tmp/ReadSymLink-test\n";
}
else
{
err = errno;
std::cerr << "symlink failed with error " << err << "\n";
return 1;
}
// Open it for reading
int fd = open( "/tmp/ReadSymLink-test", O_RDONLY | O_SYMLINK );
if (fd < 0)
{
err = errno;
std::cerr << "open failed with error " << err << "\n";
return 2;
}
std::cout << "open succeeded\n";
// and read it
char buffer[200];
ssize_t bytesRead = read( fd, buffer, sizeof(buffer) );
if (bytesRead < 0)
{
err = errno;
std::cerr << "read failed with error " << err << "\n";
return 2;
}
else
{
buffer[ bytesRead ] = '\0';
std::cout << "read of symlink result: " << buffer << "\n";
}
return 0;
}
The result, running under Sonoma 14.2 (beta) is
created file /tmp/ReadSymLink-test
open succeeded
read failed with error 1
I'm getting occasional crashes, which have not happened while running under a debugger and I haven't figured out how to reproduce. I wonder if anyone can help me glean more information from a crash report. Here's the main part. This particular report if from macOS 14.2 beta, but I've also seen it from 14.1.1.
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000018
Exception Codes: 0x0000000000000001, 0x0000000000000018
VM Region Info: 0x18 is not in any region. Bytes before following region: 140723250839528
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
mapped file 7ffcaf60c000-7ffcd7f48000 [649.2M] r-x/r-x SM=COW ...t_id=b7394f27
Error Formulating Crash Report:
PC register does not match crashing frame (0x0 vs 0x1022A3630)
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 <translation info unavailable> 0x1022a3630 ???
1 libsystem_platform.dylib 0x7ff819d0b393 _sigtramp + 51
2 AppKit 0x7ff81d3549a6 -[NSControl _setWindow:] + 59
3 AppKit 0x7ff81d413c19 -[NSSegmentedControl _setWindow:] + 42
4 AppKit 0x7ff81defd3be __21-[NSView _setWindow:]_block_invoke.391 + 324
5 AppKit 0x7ff81d33a62c -[NSView _setWindow:] + 1886
6 AppKit 0x7ff81defd3be __21-[NSView _setWindow:]_block_invoke.391 + 324
7 AppKit 0x7ff81d33a62c -[NSView _setWindow:] + 1886
8 AppKit 0x7ff81d572d08 -[NSWindow dealloc] + 922
9 MyApp 0x1011b6b81 -[JWWindow dealloc] (in MyApp) (JWWindow.m:37)
10 Foundation 0x7ff81b3d179c _NSKVOPerformWithDeallocatingObservable + 151
11 Foundation 0x7ff81acc6d54 NSKVODeallocate + 150
12 libobjc.A.dylib 0x7ff8199189d7 AutoreleasePoolPage::releaseUntil(objc_object**) + 169
13 libobjc.A.dylib 0x7ff819915cf0 objc_autoreleasePoolPop + 235
14 CoreFoundation 0x7ff819d794a1 _CFAutoreleasePoolPop + 22
15 Foundation 0x7ff81ac869ea -[NSAutoreleasePool drain] + 133
16 AppKit 0x7ff81d315694 -[NSApplication run] + 653
17 AppKit 0x7ff81d2e9662 NSApplicationMain + 816
18 MyApp 0x100ef5034 start (in MyApp) + 52
I can see that it involves deallocating a window as part of draining an autorelease pool, but does the presence of _NSKVOPerformWithDeallocatingObservable mean that KVO is involved somehow? And does the note "PC register does not match crashing frame" tell me anything?
When I'm running my Mac app in the Xcode debugger, and it launches a helper app, the helper crashes with a dyld error. This does not happen if I am not debugging.
Termination Reason: Namespace DYLD, Code 1 Library missing
Library not loaded: @rpath/Cal3D.framework/Versions/A/Cal3D
Referenced from: <3C1A67BA-5545-31A2-86C5-77104B0194FE> /Volumes/VOLUME/*/SBEngineLib4.framework/Versions/A/SBEngineLib4
The frameworks SBEngineLib4.framework and Cal3D.framework exist in the main app. The helper app does not contain any frameworks, but does contain dylib versions of those frameworks, which I suppose is confusing things somehow.
I'm trying to download a small data file using NSURLSession, but the completion handler is never called (where "never" means I waited long after the specified timeout).
NSURLSessionConfiguration* config =
NSURLSessionConfiguration.ephemeralSessionConfiguration;
config.timeoutIntervalForResource = 120.0;
config.timeoutIntervalForRequest = 120.0;
NSURLSession* session = [NSURLSession sessionWithConfiguration: config];
[session dataTaskWithURL: inURL
completionHandler:
^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error)
{
...
}];
I'm trying to update some old code that used the deprecated NSURLConnection class, and am using the same URL, so I know that the URL is good.
I just noticed that +[CIPlugIn loadAllPlugIns] has been deprecated since 10.15 (OK, I'm a little slow), along with all the other CIPlugIn methods except for loadNonExecutablePlugIns. I don't see any documentation about what I'm supposed to do instead. What's the deal?
I'm updating some very old code, and it sends an kAESync Apple Event to the Finder to let Finder know that a file has been created or updated. Does this still serve a purpose? I know that Apple Events still exist, but creating the event involves deprecated things like FSRef and AliasHandle.
Possibly related: -[NSWorkspace noteFileSystemChanged:]. The documentation says that it informs the workspace object, so maybe it doesn't inform the Finder, and the documentation also says "Avoid calling this method if possible".
I have an app group to share settings between a main app and a helper. This is accessed using [[NSUserDefaults alloc] initWithSuiteName: @"FDHC2KMZ6V.com.jwwalker.autopairs.suite"]. What's puzzling me is that if I go to Terminal and enter
defaults read FDHC2KMZ6V.com.jwwalker.autopairs.suite
it tells me that the domain does not exist. Is this a bug in the defaults tool, or is there some trick I'm missing?
Yesterday and today, when I try to notarize a Mac app, it fails in the upload stage. And yet Apple's system status page shows a green dot next to Developer ID Notary Service.
I've tried relaunching Xcode and even rebooting the Mac.
Xcode 14.3, macOS 13.4.1
Feedback filed, FB12570950
I'm building a plug-in for an app that I did not create, and I would like to notarize it. I know I can so that using notarytool, but it would be nice if I could do it using Xcode. However, when I archive, it creates a "generic Xcode archive". I've read TN3110: Resolving generic Xcode archive issue. Since the plugin is being created by itself rather than as part of a larger build product, I assume that I should use the SKIP_INSTALL = NO build setting. I am less sure of what to do with the INSTALL_PATH build setting. If I leave it empty, then nothing gets created in the Products folder of the archive. If I set it to some path, then the product is placed in the archive but nested in a subfolder of Products.
The new environment constraints talk about a responsible process versus the launching process, but I'm not clear on the difference, and haven't been able to find a definition of a responsible process.
When I go to https://www.frameforge.com in Safari, the address bar doesn't contain the little padlock icon indicating proper SSL. But if I go to the same URL in FireFox, Chrome, or Edge, they do have a lock indicating that all is well. How can I figure out why Safari is not happy with this site's certificates or whatever?
I'm getting a code signing crash when I try to register a helper app as a login item, and I think this is new with macOS 13.4. That is, the crash log contains this:
Exception Type: EXC_CRASH (SIGKILL (Code Signature Invalid))
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: CODESIGNING 4 Launch Constraint Violation
I'm seeing one suspicious message in the system log:
tccd Prompting policy for hardened runtime; service: kTCCServiceAppleEvents requires entitlement com.apple.security.automation.apple-events but it is missing for accessing={TCCDProcess: identifier=com.jwwalker.AutoPairs.uiapp,
pid=91471, auid=501, euid=501, binary_path=/Applications/AutoPairs 4.0.1a1/AutoPairs4.0.1a1.app/Contents/MacOS/AutoPairs}, requesting={TCCDProcess: identifier=com.apple.appleeventsd, pid=531, auid=55, euid=55, binary_path=/System/Library/CoreServices/appleeventsd},
I can't figure out why the OS would think that I need an Apple Events entitlement.
I've looked a the thread Resolving Code Signing Crashes on
Launch, but it hasn't enlightened me. One problem I ran into is at the step
certtool d "authorised0.cer"
I get the output
CSSM_CL_CertGetAllFields: CSSMERR_CL_UNKNOWN_FORMAT
When I try to turn on sandboxing on a helper tool, it crashes on launch. I thought my problem was solved when I found the post Sandboxed Helper Tool Crashing in libsystem_secinit, but no. I set CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO in the target that builds the tool, and verified that the only entitlement in the built tool is that com.apple.security.app-sandbox is true, but it still crashes.
Backtrace:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_secinit.dylib 0x7ff81af68400 _libsecinit_appsandbox.cold.7 + 49
1 libsystem_secinit.dylib 0x7ff81af6793c _libsecinit_appsandbox + 1831
2 libsystem_trace.dylib 0x7ff80f06649c _os_activity_initiate_impl + 51
3 libsystem_secinit.dylib 0x7ff81af671d4 _libsecinit_initializer + 67
4 libSystem.B.dylib 0x7ff81af7b8b9 libSystem_initializer + 286
5 dyld 0x7ff80efa1618 invocation function for block in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const + 172
6 dyld 0x7ff80efe0de9 invocation function for block in dyld3::MachOAnalyzer::forEachInitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const*) const + 242
7 dyld 0x7ff80efd4ef7 invocation function for block in dyld3::MachOFile::forEachSection(void (dyld3::MachOFile::SectionInfo const&, bool, bool&) block_pointer) const + 557
8 dyld 0x7ff80ef870b7 dyld3::MachOFile::forEachLoadCommand(Diagnostics&, void (load_command const*, bool&) block_pointer) const + 245
9 dyld 0x7ff80efd40a7 dyld3::MachOFile::forEachSection(void (dyld3::MachOFile::SectionInfo const&, bool, bool&) block_pointer) const + 175
10 dyld 0x7ff80efe08d2 dyld3::MachOAnalyzer::forEachInitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const*) const + 470
11 dyld 0x7ff80efa14f6 dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const + 150
12 dyld 0x7ff80efa9fd4 dyld4::PrebuiltLoader::runInitializers(dyld4::RuntimeState&) const + 30
13 dyld 0x7ff80efc100d dyld4::APIs::runAllInitializersForMain() + 71
14 dyld 0x7ff80ef8c369 dyld4::prepare(dyld4::APIs&, dyld3::MachOAnalyzer const*) + 3743
15 dyld 0x7ff80ef8b281 start + 2289