Re: Really need help with geneweb
Christian PERRIER <bubulle@debian.org> writes:
> Dear Ocaml maintainers,
[...]
> Still, my clues in Ocaml are close to zero....and #557553 can't be
> solved by myself alone.
>
The following patch seem to do the trick but need testing:
--8<---------------cut here---------------start------------->8---
--- geneweb-5.02~cvs20091031.orig/src/iovalue.ml
+++ geneweb-5.02~cvs20091031/src/iovalue.ml
@@ -10,7 +10,7 @@ value fun_tag = Obj.tag (Obj.repr (fun x
read inside a value output by output_value (no headers) must
match OCaml's input_value system (intern.c) *)
-value sizeof_long = Sys.word_size / 8;
+value sizeof_long = 32 / 8;
value sign_extend_shift = (sizeof_long - 1) * 8 - 1;
value sign_extend x = (x lsl sign_extend_shift) asr sign_extend_shift;
--8<---------------cut here---------------end--------------->8---
The problem seem to be that the author assume that the
input_binary_int/output_binary_int standard function use different size
for writing on different arch, when they are specified as to be using 4
bytes, big-endian, and to be compatible across all machines for a given
version of Objective Caml.
This NEED testing.
(Having a stack frame has been difficult, finding the problem has been
then easy. for reference, here is the patch for producing the stack
frame, some change might be unneeded).
--8<---------------cut here---------------start------------->8---
--- geneweb-5.02~cvs20091031.orig/wserver/wserver.ml
+++ geneweb-5.02~cvs20091031/wserver/wserver.ml
@@ -176,6 +176,7 @@ value print_exc exc =
prerr_char '\n'
}
| x -> do {
+ raise x;
prerr_string "Wserver: uncaught exception: ";
prerr_string (Obj.magic (Obj.field (Obj.field (Obj.repr x) 0) 0));
if Obj.size (Obj.repr x) > 1 then do {
@@ -666,7 +667,7 @@ value f addr_opt port tmout max_clients
| Unix.Unix_error (Unix.EBADF | Unix.ENOTSOCK) "accept" _ as x ->
(* oops! *) raise x
| Sys_error "Broken pipe" -> ()
- | exc -> print_err_exc exc ];
+ | exc -> raise exc ];
try wflush () with [ Sys_error _ -> () ];
try flush stdout with [ Sys_error _ -> () ];
flush stderr;
--- geneweb-5.02~cvs20091031.orig/tools/Makefile.inc.opt
+++ geneweb-5.02~cvs20091031/tools/Makefile.inc.opt
@@ -5,8 +5,8 @@ CAMLP5_COMM=TOP=$(TOP) $(TOP)/tools/caml
CAMLP5F=-DUNIX
CAMLP5D=+camlp5
LIBUNIX=-cclib -lunix
-OCAMLC=ocamlc.opt
-OCAMLOPT=ocamlopt.opt
+OCAMLC=ocamlc.opt -g
+OCAMLOPT=ocamlopt.opt -g
OCAMLI=
OCAMLD=
STRIP=strip
--- geneweb-5.02~cvs20091031.orig/tools/Makefile.inc.out
+++ geneweb-5.02~cvs20091031/tools/Makefile.inc.out
@@ -2,14 +2,14 @@
TOP=..
CAMLP5_COMM=TOP=$(TOP) $(TOP)/tools/camlp5_comm.sh
CAMLP5F=-DUNIX
CAMLP5D=+camlp5
LIBUNIX=-cclib -lunix
-OCAMLC=ocamlc
+OCAMLC=ocamlc -g
OCAMLOPT=ocamlopt
OCAMLI=
OCAMLD=
-STRIP=strip
+STRIP=
RM=/bin/rm -f
EXE=
STATIC=-ccopt -static
--8<---------------cut here---------------end--------------->8---
--
Rémi Vanicat
Reply to: