I have made a new 7.6 beta, available at http://pike.ida.liu.se/pub/pike/beta/7.6.40-20051024/Pike-v7.6.40.tar.gz
Please test it and see if you find any blocking bugs. Otherwise this will be released as the next stable 7.6.
On Solaris 9/sparc as well:
omoikane:~/Pike-v7.6.40/build/sunos-5.9-sun4u% make run_hilfe /home/marcus/Pike-v7.6.40/build/sunos-5.9-sun4u/pike -DNOT_INSTALLED -DPRECOMPILED_SEARCH_MORE -m/home/marcus/Pike-v7.6.40/build/sunos-5.9-sun4u/master.pike *** Signal 10 - core dumped make: Fatal error: Command failed for target `run_hilfe'
Backtrace:
(gdb) where #0 0xff199d1c in readdir64_r () from /usr/lib/libc.so.1 #1 0x0015c9d8 in f_get_dir (args=1) at /home/marcus/Pike-v7.6.40/src/modules/files/efuns.c:969 #2 0x0003af54 in opcode_F_CALL_BUILTIN1 (arg1=30) at interpret_functions.h:2208 #3 0xfee9087c in ?? () Previous frame identical to this frame (corrupt stack?) (gdb)
Line 969 in modules/files/efuns.c:
969 if ((err = readdir_r(dir, tmp, &d)) || !d) {
This does not seem right. readdir_r only takes two arguments on Solaris, the second of which should not be NULL (which is the value "tmp" has here).
In the last episode (Oct 24), Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum said:
Line 969 in modules/files/efuns.c:
969 if ((err = readdir_r(dir, tmp, &d)) || !d) {
This does not seem right. readdir_r only takes two arguments on Solaris, the second of which should not be NULL (which is the value "tmp" has here).
You can tell Solaris to use the 3-args readdir_r by defining _POSIX_PTHREAD_SEMANTICS (or defining _POSIX_C_SOURCE to a value >= 199506L). Apparently this option has existed since Solaris 2.5.
http://docs.sun.com/app/docs/doc/816-5168/6mbb3hrm4?a=view
Using this flag might be a good idea for Pike 7.7 (it'd probably cause too many code changes to go into 7.6).
Maybe I'm misinterpreting the crash. It looks like this might actually be defined; the prototype you get from the header files has three arguments, and I can't find a two argument prototype for the 64-bit version (which seems to be what is actually used) anywhere. I'll investigate some more.
Ok, what _actually_ happens is this: "dir_fd" is -1, but yet we get a "dir" which is not null. The contents of this "dir" is bogus though, which is why readdir64_r crashes. I assume it is related to this checkin
revision 1.144 date: 2005/10/05 10:04:07; author: grubba; state: Exp; lines: +51 -11 Backported {f,}pathconf() cleanups from Pike 7.7.
as it touched how "dir" is created from "dir_fd".
Martin Nilsson (lvl 60) @ Pike (-) developers forum wrote:
I have made a new 7.6 beta, available at http://pike.ida.liu.se/pub/pike/beta/7.6.40-20051024/Pike-v7.6.40.tar.gz
Please test it and see if you find any blocking bugs. Otherwise this will be released as the next stable 7.6.
Seems to work with the efuns.c patch.... but I still have woes about making it as freebsd port.
Go and see http://kiwi.oav.net/7.6.40.txt you will see that lexer*.h are giving compiler problems.
I have worked on this about 3 hours yesterday evening. If someone can help me I will be please to fix this...
/Xavier
Ok, a new version at http://pike.ida.liu.se/pub/pike/beta/7.6.44/Pike-v7.6.44.tar.gz
Breaks in GTK on Solaris 10/Sparc (poseidon):
make CONFIGUREARGS=--prefix=/pkg/pike/sparc-sol10/7.6.44 *snip*
Making GTK /var/run/piketest/Pike-v7.6.44/build/sunos-5.10-sun4us/pike -DNOT_INSTALLED -DPRECOMPILED_SEARCH_MORE -m/var/run/piketest/Pike-v7.6.44/build/sunos-5.10-sun4us/master.pike /var/run/piketest/Pike-v7.6.44/src/post_modules/GTK/new_build_pgtk.pike --source='/var/run/piketest/Pike-v7.6.44/src/post_modules/GTK/source/'\ /var/run/piketest/Pike-v7.6.44/src/post_modules/GTK/output/few.pike *** Error code 132 make: Fatal error: Command failed for target `compile1' Current working directory /var/run/piketest/Pike-v7.6.44/build/sunos-5.10-sun4us/post_modules/GTK *** Error code 1 The following command caused the error: if [ "GTK" = "no" ]; then :; else \ echo Making GTK; \ ( cd GTK && \ ( rm remake >/dev/null 2>&1 || : ) && \ ( make || \ ( test -f remake && make ) ) \ ) || exit $?; \ fi make: Fatal error: Command failed for target `GTK' Current working directory /var/run/piketest/Pike-v7.6.44/build/sunos-5.10-sun4us/post_modules *** Error code 1 The following command caused the error: ( cd post_modules ; rm remake >/dev/null 2>&1 || : ; \ make || \ ( test -f remake && make ) ) || exit $? make: Fatal error: Command failed for target `post_module_objects' Current working directory /var/run/piketest/Pike-v7.6.44/build/sunos-5.10-sun4us *** Error code 1 make: Fatal error: Command failed for target `all' Current working directory /var/run/piketest/Pike-v7.6.44/build/sunos-5.10-sun4us *** Error code 1 The following command caused the error: builddir="build/`uname -s -r -m|sed "s/ /-/g"|tr "[A-Z]" "[a-z]"|tr "/()" "___"`"; \ cd "$builddir" && { \ metatarget=""; \ if test "x" = "x"; then \ if test -f master.pike -a -x pike; then :; \ elif test "x$metatarget" = xpike; then :; \ else metatarget="all $metatarget"; fi; \ if test "x$metatarget" = x; then metatarget=all; else :; fi; \ else :; fi; \ MAKE="`if [ "xmake" = "x" ]; then echo "${MAKE-make}"; else echo "make"; fi`"; \ export MAKE; \ for target in $metatarget; do \ echo Making $target in "$builddir"; \ rm -f remake; \ ${MAKE} "MAKE=${MAKE}" "MAKE_PARALLEL=" "EXPORT_NAME=" $target || { \ res=$?; \ if test -f remake; then \ ${MAKE} "MAKE=${MAKE}" "MAKE_PARALLEL=" "EXPORT_NAME=" $target || \ exit $?; \ else \ exit $res; \ fi; \ }; \ done; \ } || exit $? make: Fatal error: Command failed for target `compile'
That's the first place it uses the new pike, so it probably has nothing to do with GTK. If you run make run_hilfe (or make pike && bin/pike --gdb) you probably get something more useful.
The output makes kittens cry:
(gdb) run Starting program: /var/run/piketest/Pike-v7.6.44/build/sunos-5.10-sun4us/pike -DPRECOMPILED_SEARCH_MORE '-m/var/run/piketest/Pike-v7.6.44/build/sunos-5.10-sun4us/master.pike' warning: Lowest section in /lib/libthread.so.1 is .dynamic at 00000074 warning: Lowest section in /lib/libdl.so.1 is .dynamic at 00000094 warning: Lowest section in /lib/libpthread.so.1 is .dynamic at 00000074
Program received signal SIGILL, Illegal instruction. 0xfee805ec in ?? () (gdb) bt #0 0xfee805ec in ?? () #1 0xfee805ec in ?? () Previous frame identical to this frame (corrupt stack?)
pike-devel@lists.lysator.liu.se