|
From: | Andreas Fink |
Subject: | NSData dataWithURL |
Date: | Tue, 21 Apr 2020 19:14:48 +0200 |
Hello, I have a strange behaviour in GNUStep. Before digging deeper, I wanted to know if anyone has a clue. I have this piece of code: - (BOOL)updateViaUrl:(NSString *)url /* returns YES on success */ serial:(NSString *)serial { NSMutableString *full_url = [[NSMutableString alloc]init]; [full_url appendFormat:@"%@?serial=%@",url,[serial urlencode]]; NSURL *u = [[NSURL alloc]initWithString:full_url]; NSError *e= NULL; @autoreleasepool { @try { #ifdef __APPLE__ NSData *data = "" style="color: #3900a0" class="">NSData dataWithContentsOfURL:u options:NSDataReadingUncached error:&e]; #else NSData *data = "" dataWithContentsOfURL:u]; #endif if((e==0) && (data.length > 0)) { returnValue = YES; } } @catch(NSException *e) { NSLog(@"Exception while pulling URL %@",full_url); returnValue = NO; } } return returnValue; } This gets called in a background thread in regular intervalls. Its updating a server with some statistic by pushing some data over https://.. Here's how the process is created: - (void)runSelectorInBackground:(SEL)aSelector withObject:(id)anArgument { UMObjectThreadStarter *ts = [[UMObjectThreadStarter alloc]init]; ts.selector = aSelector; ts.obj = anArgument; [NSThread detachNewThreadSelector:@selector(threadStarter:) toTarget:self withObject:ts]; } (threadStarter: then calls above updateViaURL at some point) What I have seen is that on gnustep it was producing a crash. This was caused by no autorelease pool being present as it was launched in a background thread. @autoreleasepool {...} fixed that crash. (On MacOS X it wasnt crashing). Now I experience some busyloops in my application _sometimes_ and whenever I load it into the debugger I see that it is in dataWithContentsOfURL: call To be noted is that the URL called could not be reachable intentionally (no DNS, firewalls etc) or temporarely (no current coverage, routing issues) For now I just disabled this code but I wondered if anyone has seen something similar and knows a quick workaround |
[Prev in Thread] | Current Thread | [Next in Thread] |