On SUSE 11.4 (both 32 and 64 versions) the ediff for comparing buffers is broken for the xemacs that comes bundle (21.5.29.b604d235f028-7.3). It works for emacs.

The traceback for xemacs is:

Debugger entered--Lisp error: (invalid-state "Bogus value for `coding-system-for-read'" emacs-internal)
start-process-internal("*call-process*" #<buffer "*ediff-diff*"> "diff" "/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I")
apply(start-process-internal "*call-process*" #<buffer "*ediff-diff*"> "diff" ("/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I"))
call-process-internal("diff" nil #<buffer "*ediff-diff*"> nil "/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I")
apply(call-process-internal "diff" nil #<buffer "*ediff-diff*"> nil ("/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I"))
call-process("diff" nil #<buffer "*ediff-diff*"> nil "/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I")
apply(call-process "diff" nil #<buffer "*ediff-diff*"> nil ("/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I"))
ediff-exec-process("diff" #<buffer "*ediff-diff*"> synchronize "" "/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I")
ediff-make-diff2-buffer(#<buffer "*ediff-diff*"> "/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I")
ediff-setup-diff-regions("/tmp/test2.f90hdBSzQ" "/tmp/test1.f90hdBX1I" nil)
ediff-setup(#<buffer "test2.f90"> "/tmp/test2.f90hdBSzQ" #<buffer "test1.f90"> "/tmp/test1.f90hdBX1I" nil nil ((lambda nil (delete-file "/tmp/test2.f90hdBSzQ") (dele
te-file "/tmp/test1.f90hdBX1I") (if ... ...))) ((ediff-job-name . ediff-buffers)) nil)
ediff-buffers-internal("test2.f90" "test1.f90" nil nil ediff-buffers)
#<compiled-function (buffer-A buffer-B &optional startup-hooks job-name) "...(13)" [startup-hooks buffer-B buffer-A job-name ediff-buffers ediff-buffers-internal nil
] 6 ("/usr/share/xemacs/xemacs-packages/lisp/ediff/ediff.elc" . 5607) (let (bf) (list ... ...))>("test2.f90" "test1.f90")
call-interactively(ediff-buffers)