Hm... I guess the opApply in ModuleInfo could just skip null entries. Or assert. Either would be better than simply passing them through to the caller.
On Nov 12, 2010, at 11:25 AM, Steve Schveighoffer wrote: > Hm... I guess I need Walter to say whether it's a valid condition for a > module > to be null in the moduleinfo array. Is that true Walter? If so, I'll put > the > guards back in. > > If not, should druntime look for that condition and throw an error? > > -Steve > > > > ----- Original Message ---- >> From: Masahiro Nakagawa <[email protected]> >> To: Discuss the phobos library for D <[email protected]> >> Sent: Fri, November 12, 2010 1:30:50 PM >> Subject: Re: [phobos] "bus error" happens on Mac OS X >> >> I inserted your code and assert failed. >> And then, I enabled following code. >> >> foreach (m; _moduleinfo_array) >> { >> printf("\t%p\n", m); >> } >> >> Result: >> >> Testing generated/osx/debug/unittest/crc32 >> 0x0 >> 0x146a0 >> 0x14ac0 >> 0x14ad0 >> 0x15dbc >> 0x15df4 >> 0x15e2c >> 0x15ea0 >> 0x15ecc >> 0x15f68 >> 0x15f9c >> 0x1649c >> 0x1696c >> 0x17ac4 >> 0x17fa4 >> 0x18308 >> 0x18334 >> 0x1836c >> 0x183f8 >> 0x18444 >> 0x18524 >> 0x18c74 >> 0x18c84 >> 0x18cf8 >> 0x18d68 >> 0x18d9c >> 0x18dcc >> 0x18e0c >> 0x18f60 >> 0x19088 >> 0x193ec >> make[1]: *** [generated/osx/debug/unittest/crc32] Bus error >> make[1]: *** Deleting file `generated/osx/debug/unittest/crc32' >> make: *** [unittest] Error 2 >> >> The first element of _moduleinfo_array is null... >> >> Currently, Jacob's patch fixes this bug :) >> >> >> Masahiro >> >> On Fri, 12 Nov 2010 21:20:06 +0900, Steve Schveighoffer >> <[email protected]> >> wrote: >> >>> I think the Mac OS code generation has some issues. >>> >>> In the original code before I checked that in, every module index is set >> (see >>> the revision before 414: >>> >> http://dsource.org/projects/druntime/browser/trunk/src/object_.d?rev=405#L1900). >>> I don't see why r414 fails and r413 doesn't. >>> >>> BTW, I just noticed, a lot of the code in prior versions checks to see if >> the >>> array contains null pointers, does this happen? I don't think I put those >>> guards in. >>> >>> Masahiro, can you run an assert loop like so? I don't have a Mac, and >>> everything appears to work fine on Linux. >>> >>> foreach(m; _moduleinfo_array) >>> if(!m) >>> assert(0, "found null reference"); >>> >>> -Steve >>> >>> >>> >>> ----- Original Message ---- >>>> From: Masahiro Nakagawa <[email protected]> >>>> To: Phobos mailing list <[email protected]> >>>> Sent: Fri, November 12, 2010 12:03:01 AM >>>> Subject: [phobos] "bus error" happens on Mac OS X >>>> >>>> Any programs raised "bus error" in the trunk (My environment is Mac OS X >>>> 10.6.4). >>>> I checked druntime and found problematic revision. >>>> r413 works fine but r414 and later don't (Phobos unittest stopped at > crc32 >>>> test). >>>> >>>> http://dsource.org/projects/druntime/changeset/414 >>>> >>>> The cause is an access to _moduleinfo_array. >>>> In the above link, "m.index = i;" at line 2045 is because of this bug. >>>> But, but, but, r414 doesn't change the creation routine of >> _moduleinfo_array. >>>> >>>> It's a mystery to me... Why? >>>> >>>> >>>> Masahiro >>>> _______________________________________________ >>>> phobos mailing list >>>> [email protected] >>>> http://lists.puremagic.com/mailman/listinfo/phobos >>>> >>> >>> >>> _______________________________________________ >>> phobos mailing list >>> [email protected] >>> http://lists.puremagic.com/mailman/listinfo/phobos >> _______________________________________________ >> phobos mailing list >> [email protected] >> http://lists.puremagic.com/mailman/listinfo/phobos >> > > > > _______________________________________________ > phobos mailing list > [email protected] > http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
