SUMMARY: PGP 5.0i SIGBUS problems (sol 2.5.1)

From: Alan Thew (Alan.Thew@liverpool.ac.uk)
Date: Wed Jul 29 1998 - 08:21:30 CDT


On Wed, 29 Jul 1998, I wrote:

>Some people seem to have got this working, but despite a clean compile
>and parts of pgpk working the rest generates SIGBUS errors.
>
>
Thanks for the very quick responses from:

 Graham Leggett <graham@vwv.com>
 Dieter Gobbers <gobbers@faw.uni-ulm.de>
 nik@op.ph.ic.ac.uk (Nick Wooder Ex 47753 rm 6M09)
 Ulla Sandberg <ulla@stupi.se>

From: Graham Leggett <graham@vwv.com>

I don't remember what I did exactly, but it involved disabling 64 bit
code support, an option in the makefile.

From: Dieter Gobbers <gobbers@faw.uni-ulm.de>
I reasently compiled PGP 5.0i on a vary of unix machines, including Solaris 2.5.
The SIGBUS error is caused by the assumption of the configure script, that all
Solaris 2.x machines can handle 64 bit integers. There is a includefile, where
that is defined. I undefined "HAVE_64" an voila, it works now very reliable!

From: nik@op.ph.ic.ac.uk (Nick Wooder Ex 47753 rm 6M09)

The problem is a known bug with Solaris (see the PGP web site)
The fix is to to a make clean and make very-clean (not too sure if absolutly
necessary). Edit the file
        pgpUsuals.h in the src/include directory and
change line 56(ish) from HAVE64 1 to HAVE64 0
and to comment out the section of code at about line 70 ish.

/* Comment out all of this
#ifndef HAVE64
#if defined(ULONG_LONG_MAX) || defined (ULLONG_MAX) || defined(ULONGLONG_MAX)
typedef unsigned long long word64;
typedef long long int64;
#define HAVE64 1
#endif
#endif
*/

Then configure and make as usual. All then works fine.

From: Ulla Sandberg <ulla@stupi.se>

Yes,
   http://www.pgpi.com/bugs/bugs50i.shtml

| Kris Van Hees <aedil@ny.fnx.com> wrote:
|
| Hi,
|
| Compiling PGP 5.0i sources on a Solaris 2.5.1 (Sparc20) box with GCC
| 2.7.1 succeeded but the resulting code aborts with a Bus Error when
| running key generation (pgpk -g). I traced down the problem to the struct
| MD5Context, which contains a conditional for HAVE64, which is set along
| with typedefs in include/pgpUsuals.h. I am not certain why, but using
| that auto-resolving finds a 64bit type as 'unsigned long long', and thus
| sets HAVE64. Yet when used in code this fails. I think this might be a
| problem with GCC/Solaris interaction. A Bus Error sounds to me as a
| possible alignment problem there.
|
| I manually disabled the HAVE64 check, so that the code will use two
| 32bit words, and that solved the problem.
 



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:12:45 CDT