• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: [SOLVED] Assignment problem with doubles: turning into NaN under Leopard
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [SOLVED] Assignment problem with doubles: turning into NaN under Leopard


  • Subject: Re: [SOLVED] Assignment problem with doubles: turning into NaN under Leopard
  • From: Frank Illenberger <email@hidden>
  • Date: Fri, 7 Dec 2007 13:22:45 +0100

Thanks for your hints. I just found the root of the problem:
In my code, I put some calculation selectors on a custom stack to be performed at the end of a run loop iteration. These selectors are then executed by calling -[NSObject performSelector:withObject:]. One of the called methods in my code returns a double value whereas performSelector:withObject: expects an id return value. After 8 repetitions, this mismatch lets the floating point stack overflow so that following floating point assignments result in getting a NaN.


I managed to locate the root of the problem by using gdb's "info float" command which dumps the FP stack.

Cheers

Frank

On 06.12.2007, at 19:11, Frank Illenberger wrote:

Hi guys,

I am currently trying to track down a very strange problem that only occurs on Intel Macs under Leopard. At various locations in my application, assignments from a method return value to a local double variable result in the variable containing NaN although the method result is 0.0.

Example:

- (double)methodValue
{
	return 0.0;
}

- (void)test
{
	double value = [self methodValue];

	if(isnan(value))
		NSLog(@"PROBLEM!");
}


The problem does not always occur, but is rather following strange patterns. It reproducibly occurs inside my application but not in any test case I constructed. The problem does not occur if I put a NSLog statement before the assignment. The problem in my case has definitely nothing to do with nil-messaging or threading.


During today's research I found a similar case in the gcc mailing list from 1999
http://gcc.gnu.org/ml/gcc-bugs/1999-10/msg00196.html
This case was described as libc corrupting the FP stack so that following FP operations could fail.


Has anybody encountered a similar problem in applications running on Intel machines under Leopard?

Cheers

Frank




_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >Assignment problem with doubles: turning into NaN under Leopard (From: Frank Illenberger <email@hidden>)

  • Prev by Date: Re: Trouble creating drag image from a partial view
  • Next by Date: NSImage initWithContentsOfURL over SSL
  • Previous by thread: Re: Assignment problem with doubles: turning into NaN under Leopard
  • Next by thread: Question about NSView's -enterFullScreenMode:withOptions: method
  • Index(es):
    • Date
    • Thread