Thread overview
Compile Phobos library ?
Feb 18, 2010
GG
Feb 18, 2010
Ellery Newcomer
Feb 18, 2010
BCS
Feb 18, 2010
GG
Feb 18, 2010
BCS
Feb 18, 2010
GG
Feb 18, 2010
BCS
Feb 18, 2010
GG
February 18, 2010
DMD2.040 on linux:

When I try to build phobos library with make -f linux.mak, I got :
dmd -w -O -release -nofloat -d  -lib -ofobj/posix/release/libphobos2.a crc32.d std/algorithm.d std/array.d std/atomics.d std/base64.d std/bigint.d std/bitmanip.d std/boxer.d std/compiler.d std/complex.d std/contracts.d std/conv.d std/cpuid.d std/cstream.d std/ctype.d std/date.d std/datebase.d std/dateparse.d std/demangle.d std/encoding.d std/file.d std/format.d std/functional.d std/getopt.d std/intrinsic.d std/iterator.d std/json.d std/loader.d std/math.d std/md5.d std/metastrings.d std/mmfile.d std/numeric.d std/outbuffer.d std/path.d std/perf.d std/process.d std/random.d std/range.d std/regex.d std/regexp.d std/signals.d std/socket.d std/socketstream.d std/stdint.d std/stdio.d std/stdiobase.d std/stream.d std/string.d std/syserror.d std/system.d std/traits.d std/typecons.d std/typetuple.d std/uni.d std/uri.d std/utf.d std/variant.d std/xml.d std/zip.d std/zlib.d std/c/stdarg.d std/c/stdio.d etc/c/zlib.d std/c/linux/linux.d std/c/linux/socket.d obj/posix/release/etc/c/zlib/adler32.o obj/posix/release/etc/c/zlib/compress.o obj/posix/release/etc/c/zlib/crc32.o obj/posix/release/etc/c/zlib/gzio.o obj/posix/release/etc/c/zlib/uncompr.o obj/posix/release/etc/c/zlib/deflate.o obj/posix/release/etc/c/zlib/trees.o obj/posix/release/etc/c/zlib/zutil.o obj/posix/release/etc/c/zlib/inflate.o obj/posix/release/etc/c/zlib/infback.o obj/posix/release/etc/c/zlib/inftrees.o obj/posix/release/etc/c/zlib/inffast.o libdruntime.a
make: *** [obj/posix/release/libphobos2.a] Segmentation fault (core dumped)

libdruntime.a is needed, so I compiled it and got no error, but libphobos2.a doesn't build. Am I missing something ?

Thanks !
GG
February 18, 2010
On 02/17/2010 07:09 PM, GG wrote:
> DMD2.040 on linux:
>
> When I try to build phobos library with make -f linux.mak, I got :
> dmd -w -O -release -nofloat -d  -lib -ofobj/posix/release/libphobos2.a crc32.d std/algorithm.d std/array.d std/atomics.d std/base64.d std/bigint.d std/bitmanip.d std/boxer.d std/compiler.d std/complex.d std/contracts.d std/conv.d std/cpuid.d std/cstream.d std/ctype.d std/date.d std/datebase.d std/dateparse.d std/demangle.d std/encoding.d std/file.d std/format.d std/functional.d std/getopt.d std/intrinsic.d std/iterator.d std/json.d std/loader.d std/math.d std/md5.d std/metastrings.d std/mmfile.d std/numeric.d std/outbuffer.d std/path.d std/perf.d std/process.d std/random.d std/range.d std/regex.d std/regexp.d std/signals.d std/socket.d std/socketstream.d std/stdint.d std/stdio.d std/stdiobase.d std/stream.d std/string.d std/syserror.d std/system.d std/traits.d std/typecons.d std/typetuple.d std/uni.d std/uri.d std/utf.d std/variant.d std/xml.d std/zip.d std/zlib.d std/c/stdarg.d std/c/stdio.d etc/c/zlib.d std/c/linux/linux.d std/c/linux/socket.d obj/posix/release/etc/c/zlib
/adler32.o obj/posix/release/etc/c/zlib/compress.o obj/posix/release/etc/c/zlib/crc32.o obj/posix/release/etc/c/zlib/gzio.o obj/posix/release/etc/c/zlib/uncompr.o obj/posix/release/etc/c/zlib/deflate.o obj/posix/release/etc/c/zlib/trees.o obj/posix/release/etc/c/zlib/zutil.o obj/posix/release/etc/c/zlib/inflate.o obj/posix/release/etc/c/zlib/infback.o obj/posix/release/etc/c/zlib/inftrees.o obj/posix/release/etc/c/zlib/inffast.o libdruntime.a
> make: *** [obj/posix/release/libphobos2.a] Segmentation fault (core dumped)
>
> libdruntime.a is needed, so I compiled it and got no error, but libphobos2.a doesn't build.
> Am I missing something ?
>
> Thanks !
> GG

fwiw, I tried compiling a project I wrote last semester with 2.040 (and 2.038) a few days ago and got the same output. Something in DMD seems to have broken since 2.035
February 18, 2010
Hello GG,

> DMD2.040 on linux:
> 
> When I try to build phobos library with make -f linux.mak, I got :
> 

[...]

> 
> make: *** [obj/posix/release/libphobos2.a] Segmentation fault (core
> dumped)
> 
> libdruntime.a is needed, so I compiled it and got no error, but
> libphobos2.a doesn't build. Am I missing something ?


can you try that with a debug build of DMD under GDB and get a stack trace? It might help finding/fixing the error.

> Thanks !
> GG
-- 
... <IXOYE><



February 18, 2010
Hello !
I have already used gdb to debug program compiled with dmd, but never link gdb with DMD at same time.
I found on google something like this : nameofprogram -g -d gdb
But when I try with DMD like : DMD -g -d gdb [...] , the compiler DMD look for a .d file (cannot read file gdb.d) Of course, it's normal.
So could you explain me how to link gdb with DMD ? Is there an option parameter to pass to DMD?

Thanks !
GG
February 18, 2010
Hello GG,

> Hello !
> 
> I have already used gdb to debug program compiled with dmd, but never
> link gdb with DMD at same time.
> 
> I found on google something like this : nameofprogram -g -d gdb
> 
> But when I try with DMD like : DMD -g -d gdb [...] , the compiler DMD
> look for a .d file (cannot read file gdb.d) Of course, it's normal.
> 
> So could you explain me how to link gdb with DMD ? Is there an option
> parameter to pass to DMD?
> 

I was suggesting running DMD under the debugger as you would any other program:

gdb dmd
r  -g -d files.d

You might have to make a debug build of DMD but that's easy (a one line change in linux.mak and run it)

-- 
... <IXOYE><



February 18, 2010
Thanks you very much for your explanation ! I got it work with gdb and got this:

If I pass to dmd : r -g -d -lib -ofobj/posix/release/libphobos2.a [all .d and .o files] ../druntime/libdruntime.a, I get this :

Program received signal SIGSEGV, Segmentation fault.
---Type <return> to continue, or q <return> to quit---
0x0816c5d8 in StringTable::lookup (this=0x96a4618, s=0x81f518c "object", len=6)
    at root/stringtable.c:100
100	    se = *(StringEntry **)search(s,len);
------------------------------

But if I try pass to dmd : r -g -d [all .d and .o files], I get this :
Program received signal SIGSEGV, Segmentation fault.
0x0816c6b3 in Dchar::memcmp (s1=0x81f517c "object", s2=0x96a47cc "object",
---Type <return> to continue, or q <return> to quit---
    nchars=6) at root/dchar.h:161
161	    static int memcmp(const dchar *s1, const dchar *s2, int nchars) { return ::memcmp(s1, s2, nchars); }
------------------------------

I hope it can help !
Thanks !
GG
February 18, 2010
Hello GG,

> Thanks you very much for your explanation ! I got it work with gdb and
> got this:
> 
[...]

I don't know enough about the internals to be able to help you beyond maybe converting the seg-v into an assert (but you should be able to do that yourself).

Someone else might be able to do something with a stack trace but if you can get a reproducible test case, post it to the bugzilla.

Oh, and if you can convert it to an assert, post a patch for that to the bugzilla as well.

PS. It's generally a good idea to keep some context (at least the auto generated "so and so wrote:" line) from the post you are responding to as it makes it easier for people to find replies to what they posted.

-- 
... <IXOYE><



February 18, 2010
Hello BCS !

> Hello GG,
> 
> > Thanks you very much for your explanation ! I got it work with gdb and got this:
> > 
> [...]
> 
> I don't know enough about the internals to be able to help you beyond maybe converting the seg-v into an assert (but you should be able to do that yourself).
> 
> Someone else might be able to do something with a stack trace but if you can get a reproducible test case, post it to the bugzilla.
> 
> Oh, and if you can convert it to an assert, post a patch for that to the bugzilla as well.
> 
> PS. It's generally a good idea to keep some context (at least the auto generated "so and so wrote:" line) from the post you are responding to as it makes it easier for people to find replies to what they posted.
> 
> -- 
> ... <IXOYE><


Ok ! It's a good idea ! I will keep the auto generated text.

Today I thought about that, and I realized that the only thing that I changed is this : http://d.puremagic.com/issues/show_bug.cgi?id=3692, I applied the patch (download mtype.c and replace file to /dmd2/src/dmd)
After that, I compiled a new DMD and put DMD to my environement path. And next, try to compile libphobos, give me segmentation fault !

And if I roll back the patch, I can compile libphobos without any error ! So the problem is localized, at now I have no idea to solve this bug.

Thanks !
GG