[dmd-internals] Assertion failed: (len <= 6), function OmToHeader, file libmach.c, line 168., m

Benjamin Shropshire benjamin at precisionsoftware.us
Fri Jun 18 21:01:30 PDT 2010


Andrei Alexandrescu wrote:
> OK, it's set here:
>
>     /************* Write the library ******************/
>     libbuf->write("!<arch>\n", 8);
>
>     ObjModule om;
>     om.base = NULL;
>     om.length = hoffset - (8 + sizeof(Header));
>     om.offset = 8;
>     om.name = (char*)"";
>     ::time(&om.file_time);
>     om.user_id = getuid();
>     om.group_id = getgid();
>     om.file_mode = 0100644;
>
> Both user_id and group_id are large on my machine. I set them both to 
> zero and Phobos passes unittests (except for some std.conv stuff).
>

Whatever you do, don't set them to zero. Some idiot might actually trust 
them for something important and you don't want to falsely claim to be root.

I'd use something big, but a fair site away from the max: say 987456.

>
> Andrei
>
> Walter Bright wrote:
>> There are 4 places in libmach.c where user_id is set. Next, I'd put a 
>> printf on each of them. See where that number is coming from.
>>
>> Andrei Alexandrescu wrote:
>>> Did so, got:
>>>
>>> 611078205
>>>
>>>
>>> Andrei
>>>
>>> Walter Bright wrote:
>>>>
>>>>
>>>> Andrei Alexandrescu wrote:
>>>>> Being on the road with my Mac laptop I thought I'd work on Phobos 
>>>>> for a bit. Unfortunately I'm hitting a snag. Here's the build log:
>>>>>
>>>>> make --no-print-directory -f osx.mak OS=posix BUILD=release
>>>>> cc -c  -m32 -O3 etc/c/zlib/adler32.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/adler32.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/compress.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/compress.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/crc32.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/crc32.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/deflate.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/deflate.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/gzio.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/gzio.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/infback.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/infback.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/inffast.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/inffast.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/inflate.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/inflate.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/inftrees.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/inftrees.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/trees.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/trees.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/uncompr.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/uncompr.o
>>>>> cc -c  -m32 -O3 etc/c/zlib/zutil.c 
>>>>> -ogenerated/posix/release/etc/c/zlib/zutil.o
>>>>> make -C ../druntime -f posix.mak
>>>>> dmd -lib -oflib/libdruntime.a -Xfdruntime.json -O -release -inline 
>>>>> -nofloat -w -d -Isrc -Iimport src/object_.d src/core/atomic.d 
>>>>> src/core/bitop.d src/core/cpuid.d src/core/exception.d 
>>>>> src/core/memory.d src/core/runtime.d src/core/thread.d 
>>>>> src/core/vararg.d src/core/stdc/config.d src/core/stdc/ctype.d 
>>>>> src/core/stdc/errno.d src/core/stdc/math.d src/core/stdc/signal.d 
>>>>> src/core/stdc/stdarg.d src/core/stdc/stdio.d 
>>>>> src/core/stdc/stdlib.d src/core/stdc/stdint.d 
>>>>> src/core/stdc/stddef.d src/core/stdc/string.d src/core/stdc/time.d 
>>>>> src/core/stdc/wchar_.d src/core/sys/posix/sys/select.d 
>>>>> src/core/sys/posix/sys/socket.d src/core/sys/posix/sys/stat.d 
>>>>> src/core/sys/posix/sys/wait.d src/core/sys/posix/netinet/in_.d 
>>>>> src/core/sync/barrier.d src/core/sync/condition.d 
>>>>> src/core/sync/config.d src/core/sync/exception.d 
>>>>> src/core/sync/mutex.d src/core/sync/rwmutex.d 
>>>>> src/core/sync/semaphore.d src/gc/gc.d src/gc/gcalloc.d 
>>>>> src/gc/gcbits.d src/gc/gcstats.d src/gc/gcx.d src/rt/aaA.d 
>>>>> src/rt/aApply.d src/rt/aApplyR.d src/rt/adi.d src/rt/alloca.d 
>>>>> src/rt/arrayassign.d src/rt/arraybyte.d src/rt/arraycast.d 
>>>>> src/rt/arraycat.d src/rt/arraydouble.d src/rt/arrayfloat.d 
>>>>> src/rt/arrayint.d src/rt/arrayreal.d src/rt/arrayshort.d 
>>>>> src/rt/cast_.d src/rt/cmath2.d src/rt/cover.d src/rt/deh2.d 
>>>>> src/rt/dmain2.d src/rt/invariant.d src/rt/invariant_.d 
>>>>> src/rt/lifetime.d src/rt/llmath.d src/rt/memory.d src/rt/memset.d 
>>>>> src/rt/obj.d src/rt/qsort.d src/rt/switch_.d src/rt/trace.d 
>>>>> src/rt/util/console.d src/rt/util/ctype.d src/rt/util/hash.d 
>>>>> src/rt/util/string.d src/rt/util/utf.d src/rt/typeinfo/ti_AC.d 
>>>>> src/rt/typeinfo/ti_Acdouble.d src/rt/typeinfo/ti_Acfloat.d 
>>>>> src/rt/typeinfo/ti_Acreal.d src/rt/typeinfo/ti_Adouble.d 
>>>>> src/rt/typeinfo/ti_Afloat.d src/rt/typeinfo/ti_Ag.d 
>>>>> src/rt/typeinfo/ti_Aint.d src/rt/typeinfo/ti_Along.d 
>>>>> src/rt/typeinfo/ti_Areal.d src/rt/typeinfo/ti_Ashort.d 
>>>>> src/rt/typeinfo/ti_byte.d src/rt/typeinfo/ti_C.d 
>>>>> src/rt/typeinfo/ti_cdouble.d src/rt/typeinfo/ti_cfloat.d 
>>>>> src/rt/typeinfo/ti_char.d src/rt/typeinfo/ti_creal.d 
>>>>> src/rt/typeinfo/ti_dchar.d src/rt/typeinfo/ti_delegate.d 
>>>>> src/rt/typeinfo/ti_double.d src/rt/typeinfo/ti_float.d 
>>>>> src/rt/typeinfo/ti_idouble.d src/rt/typeinfo/ti_ifloat.d 
>>>>> src/rt/typeinfo/ti_int.d src/rt/typeinfo/ti_ireal.d 
>>>>> src/rt/typeinfo/ti_long.d src/rt/typeinfo/ti_ptr.d 
>>>>> src/rt/typeinfo/ti_real.d src/rt/typeinfo/ti_short.d 
>>>>> src/rt/typeinfo/ti_ubyte.d src/rt/typeinfo/ti_uint.d 
>>>>> src/rt/typeinfo/ti_ulong.d src/rt/typeinfo/ti_ushort.d 
>>>>> src/rt/typeinfo/ti_void.d src/rt/typeinfo/ti_wchar.d obj/errno_c.o 
>>>>> obj/threadasm.o obj/complex.o obj/critical.o obj/memory_osx.o 
>>>>> obj/monitor.o
>>>>> Assertion failed: (len <= 6), function OmToHeader, file libmach.c, 
>>>>> line 168.
>>>>> make[2]: *** [lib/libdruntime.a] Abort trap
>>>>> make[1]: *** [../druntime/lib/libdruntime.a] Error 2
>>>>> make: *** [release] Error 2
>>>>>
>>>>> I recall we've discussed this problem before, without having 
>>>>> reached a conclusion. What could be the matter?
>>>>
>>>> Here's the asserting code:
>>>>
>>>>    len = sprintf(h->user_id, "%u", om->user_id);
>>>>    assert(len <= 6);
>>>>
>>>> I'd add a printf to see what your user_id is.
>>>>
>>>>>
>>>>> I updated and built dmd from svn.
>>>>>
>>>>
>>>> It works when I try it.
>>>> _______________________________________________
>>>> dmd-internals mailing list
>>>> dmd-internals at puremagic.com
>>>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>>> _______________________________________________
>>> dmd-internals mailing list
>>> dmd-internals at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>>>
>>>
>> _______________________________________________
>> dmd-internals mailing list
>> dmd-internals at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
> _______________________________________________
> dmd-internals mailing list
> dmd-internals at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>



More information about the dmd-internals mailing list