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
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals
_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals


_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals
_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals


_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals

Reply via email to