[mp2] Perl 5.10 fixes from SVN cause SIGBUS on sparc
[mp2] Perl 5.10 fixes from SVN cause SIGBUS on sparc
am 05.03.2008 19:28:54 von Niko Tyni
[Resending, as my first try on March 1st apparently got lost somewhere.
Apologies if this ends up as a duplicate.]
1. Problem Description:
We're switching to Perl 5.10 in Debian soon, and I'm trying to update the
mod_perl2 package to keep it working. Unfortunately the ModPerl-Registry
test suite is failing on the Sparc architecture because apache2 is killed
by a bus error (SIGBUS).
I can reproduce this with a "clean" current SVN trunk (r631932)
without any Debian-specific changes, and bisecting shows it broke with
r620440. This is still with Perl 5.8.8 (from Debian unstable, package
version 5.8.8-12).
The kernel messages show the SIGBUS is an unaligned access (as usual on
Sparc). I assume the U32->U16 changes in r615751 are related.
Kernel unaligned access at TPC[45dc4c] handle_futex_death+0x20/0x90
This is Debian bug #468327, http://bugs.debian.org/468327 . I'm Cc'ing
the report as 468327-forwarded@bugs.debian.org, please keep the Cc
if possible.
I'd be happy to help in any way I can, please let me know if you need
more information or testing.
~/mod-perl2$ make -C ModPerl-Registry/ test
make: Entering directory `/home/buildd/mod-perl2/ModPerl-Registry'
/usr/bin/perl -I../blib/arch -I../blib/lib \
t/TEST -clean
[warning] setting ulimit to allow core files
ulimit -c unlimited; /usr/bin/perl /home/buildd/mod-perl2/ModPerl-Registry/t/TEST -clean
APACHE_TEST_GROUP= APACHE_TEST_HTTPD= APACHE_TEST_PORT= APACHE_TEST_USER= APACHE_TEST_APXS= \
/usr/bin/perl -I../blib/arch -I../blib/lib \
t/TEST -bugreport -verbose=0
[warning] setting ulimit to allow core files
ulimit -c unlimited; /usr/bin/perl /home/buildd/mod-perl2/ModPerl-Registry/t/TEST -bugreport -verbose=0
/usr/sbin/apache2 -d /home/buildd/mod-perl2/ModPerl-Registry/t -f /home/buildd/mod-perl2/ModPerl-Registry/t/conf/httpd.conf -D APACHE2 -D PERL_USEITHREADS
using Apache/2.2.8 (worker MPM)
waiting 180 seconds for server to start: .[ error]
server has died with status 255 (please examine t/logs/error_log)
[ error] oh crap, server dumped core
[ error] for stacktrace, run: gdb /usr/sbin/apache2 -core /home/buildd/mod-perl2/ModPerl-Registry/core
sh: line 1: 23645 Terminated /usr/bin/perl /home/buildd/mod-perl2/ModPerl-Registry/t/TEST -bugreport -verbose=0
make: *** [run_tests] Error 143
2. Used Components and their Configuration:
*** mod_perl version 2.000004
*** using /home/buildd/mod-perl2/lib/Apache2/BuildConfig.pm
*** Makefile.PL options:
MP_APR_LIB => aprext
MP_APXS => /usr/bin/apxs2
MP_CCOPTS => -g -Wall
MP_COMPAT_1X => 1
MP_DEBUG => 1
MP_GENERATE_XS => 1
MP_INCLUDE_DIR => /usr/include/apache2 /usr/include/apr-1.0
MP_LIBNAME => mod_perl
MP_TRACE => 1
MP_USE_DSO => 1
MP_USE_GTOP => 1
MP_USE_STATIC => 0
*** The httpd binary was not found
*** (apr|apu)-config linking info
-L/usr/lib -laprutil-1
-L/usr/lib -lapr-1 -luuid -lrt -lcrypt -lpthread -ldl
*** /usr/bin/perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
osname=linux, osvers=2.6.22.6, archname=sparc-linux-gnu-thread-multi
uname='linux londo 2.6.22.6 #1 mon sep 10 05:00:47 est 2007 sparc64 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=sparc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='4.2.3 20071014 (prerelease) (Debian 4.2.2-3)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=/lib/libc-2.6.1.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8
gnulibc_version='2.6.1'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_ITHREADS
USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
Built under linux
Compiled at Nov 8 2007 10:57:52
%ENV:
PERL_LWP_USE_HTTP_10="1"
@INC:
/etc/perl
/usr/local/lib/perl/5.8.8
/usr/local/share/perl/5.8.8
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.8
/usr/share/perl/5.8
/usr/local/lib/site_perl
.
*** Packages of interest status:
Apache2 : -
Apache2::Request : -
CGI : 3.15
ExtUtils::MakeMaker: 6.30_01
LWP : 5.808
mod_perl : -
mod_perl2 : -
3. This is the core dump trace:
Core was generated by `/usr/sbin/apache2 -d /home/buildd/mod-perl2/ModPerl-Registry/t -f /home/buildd/'.
Program terminated with signal 10, Bus error.
#0 0x70c16914 in Perl_pop_scope (my_perl=0x13ecb0) at scope.c:143
143 const I32 oldsave = PL_scopestack[--PL_scopestack_ix];
(gdb) bt
#0 0x70c16914 in Perl_pop_scope (my_perl=0x13ecb0) at scope.c:143
#1 0x70bc5798 in Perl_pp_entersub (my_perl=0x13ecb0) at pp_hot.c:2888
#2 0x70b8d87c in Perl_runops_debug (my_perl=0x13ecb0) at dump.c:1459
#3 0x70af9278 in S_call_body (my_perl=0x13ecb0, myop=0xff8ad490, is_eval=1 '\001') at perl.c:2731
#4 0x70af9650 in Perl_eval_sv (my_perl=0x13ecb0, sv=0x140358, flags=2) at perl.c:2793
#5 0x70af9ea8 in Perl_require_pv (my_perl=0x13ecb0,
pv=0xfcec8 "/home/buildd/mod-perl2/ModPerl-Registry/t/conf/modperl_extr a_startup.pl") at perl.c:2887
#6 0x70a7d6a8 in modperl_require_file (my_perl=0x13ecb0,
pv=0xfcec8 "/home/buildd/mod-perl2/ModPerl-Registry/t/conf/modperl_extr a_startup.pl", logfailure=1)
at modperl_util.c:48
#7 0x70a72d14 in modperl_config_apply_PerlRequire (s=0x84640, scfg=0xc8bc8, perl=0x13ecb0, p=0x7e0c8)
at modperl_config.c:427
#8 0x70a69e74 in modperl_startup (s=0x84640, p=0x7e0c8) at mod_perl.c:327
#9 0x70a6983c in modperl_startup (s=0x84640, p=0x7e0c8) at mod_perl.c:207
#10 0x70a6ba9c in modperl_init (base_server=0x84640, p=0x7e0c8) at mod_perl.c:458
#11 0x70a6c3c4 in modperl_hook_init (pconf=0x7e0c8, plog=0xb0190, ptemp=0xb2198, s=0x84640)
at mod_perl.c:631
#12 0x0003f620 in ap_run_open_logs ()
#13 0x0002ce8c in main ()
This report was generated by t/REPORT on Sat Mar 1 11:55:17 2008 GMT.
Cheers,
--
Niko Tyni ntyni@debian.org
Re: [mp2] Perl 5.10 fixes from SVN cause SIGBUS on sparc
am 10.03.2008 08:06:54 von gozer
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig148A5EBCBD6D536DD36F3E9C
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
Niko Tyni wrote:
> [Resending, as my first try on March 1st apparently got lost somewhere.=
> Apologies if this ends up as a duplicate.]
>=20
> 1. Problem Description:
>=20
> We're switching to Perl 5.10 in Debian soon, and I'm trying to update t=
he
> mod_perl2 package to keep it working. Unfortunately the ModPerl-Registr=
y
> test suite is failing on the Sparc architecture because apache2 is kill=
ed
> by a bus error (SIGBUS).
>=20
> I can reproduce this with a "clean" current SVN trunk (r631932)
> without any Debian-specific changes, and bisecting shows it broke with
> r620440. This is still with Perl 5.8.8 (from Debian unstable, package
> version 5.8.8-12).
>=20
> The kernel messages show the SIGBUS is an unaligned access (as usual on=
> Sparc). I assume the U32->U16 changes in r615751 are related.
Good old Sparc!
Does this patch make the problem go away? (untested)
Index: src/modules/perl/modperl_mgv.c
==================== =====3D=
==================== =====3D=
=================3D
--- src/modules/perl/modperl_mgv.c (revision 635455)
+++ src/modules/perl/modperl_mgv.c (working copy)
@@ -271,7 +271,7 @@
}
else {
if ((cv =3D get_cv(name, FALSE))) {
- handler->attrs =3D *modperl_code_attrs(aTHX_ cv);
+ memcpy(&(handler->attrs),modperl_code_attrs(aTHX_ cv), sizeo=
f(handler->attrs));
handler->mgv_cv =3D
modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(CvGV(cv))))=
;
modperl_mgv_append(aTHX_ p, handler->mgv_cv, GvNAME(CvGV(cv=
)));
@@ -334,7 +334,7 @@
modperl_mgv_new_name(handler->mgv_obj, p, name);
}
- handler->attrs =3D *modperl_code_attrs(aTHX_ cv);
+ memcpy(&(handler->attrs),modperl_code_attrs(aTHX_ cv), sizeof(ha=
ndler->attrs));
/* note: this is the real function after @ISA lookup */
handler->mgv_cv =3D modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH=
(gv)));
modperl_mgv_append(aTHX_ p, handler->mgv_cv, handler_name);
--=20
Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectoplasm.org/ m/gozer\@(apache|cpan|ectoplasm)\.org/
--------------enig148A5EBCBD6D536DD36F3E9C
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFH1N4PyzKhB4jDpaURAnzFAJwK2He6UosGOQkdvkwOu1IxqlUSVwCf VqXV
dq5eZagS177EfRQ66iI61Cw=
=Venm
-----END PGP SIGNATURE-----
--------------enig148A5EBCBD6D536DD36F3E9C--
Re: [mp2] Perl 5.10 fixes from SVN cause SIGBUS on sparc
am 10.03.2008 10:16:28 von Niko Tyni
On Mon, Mar 10, 2008 at 12:06:54AM -0700, Philippe M. Chiasson wrote:
> Niko Tyni wrote:
> >We're switching to Perl 5.10 in Debian soon, and I'm trying to update the
> >mod_perl2 package to keep it working. Unfortunately the ModPerl-Registry
> >test suite is failing on the Sparc architecture because apache2 is killed
> >by a bus error (SIGBUS).
> Does this patch make the problem go away? (untested)
> - handler->attrs = *modperl_code_attrs(aTHX_ cv);
> + memcpy(&(handler->attrs),modperl_code_attrs(aTHX_ cv),
> sizeof(handler->attrs));
No, unfortunately I can't see any change at all with this patch.
The backtrace looks just the same.
--
Niko Tyni ntyni@debian.org
Re: [mp2] Perl 5.10 fixes from SVN cause SIGBUS on sparc
am 11.03.2008 06:53:54 von gozer
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig326C99D2B00B72F6CEF13911
Content-Type: multipart/mixed;
boundary="------------060203020806080301080005"
This is a multi-part message in MIME format.
--------------060203020806080301080005
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
Niko Tyni wrote:
> On Mon, Mar 10, 2008 at 12:06:54AM -0700, Philippe M. Chiasson wrote:
>=20
>> Niko Tyni wrote:
>>> We're switching to Perl 5.10 in Debian soon, and I'm trying to update=
the
>>> mod_perl2 package to keep it working. Unfortunately the ModPerl-Regis=
try
>>> test suite is failing on the Sparc architecture because apache2 is ki=
lled
>>> by a bus error (SIGBUS).
>=20
>> Does this patch make the problem go away? (untested)
>=20
>> - handler->attrs =3D *modperl_code_attrs(aTHX_ cv);
>> + memcpy(&(handler->attrs),modperl_code_attrs(aTHX_ cv),=20
>> sizeof(handler->attrs));
>=20
> No, unfortunately I can't see any change at all with this patch.
> The backtrace looks just the same.
How about this s/U16/U32/ diff, basically keeping the flag type at U32,
since it was not an essential part of the fix itself.
--=20
Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectoplasm.org/ m/gozer\@(apache|cpan|ectoplasm)\.org/
--------------060203020806080301080005
Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0";
name="u32.diff"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline;
filename="u32.diff"
Index: src/modules/perl/modperl_types.h
==================== =====3D=
==================== =====3D=
=================3D
--- src/modules/perl/modperl_types.h (revision 635455)
+++ src/modules/perl/modperl_types.h (working copy)
@@ -195,7 +195,7 @@
const char *name;
CV *cv;
U8 flags;
- U16 attrs;
+ U32 attrs;
modperl_handler_t *next;
};
=20
Index: src/modules/perl/modperl_util.c
==================== =====3D=
==================== =====3D=
=================3D
--- src/modules/perl/modperl_util.c (revision 635455)
+++ src/modules/perl/modperl_util.c (working copy)
@@ -900,7 +900,7 @@
return newRV_inc((SV *)*pnotes);
}
=20
-U16 *modperl_code_attrs(pTHX_ CV *cv) {
+U32 *modperl_code_attrs(pTHX_ CV *cv) {
MAGIC *mg; =20
=20
if (!SvMAGICAL(cv)) {
Index: src/modules/perl/modperl_util.h
==================== =====3D=
==================== =====3D=
=================3D
--- src/modules/perl/modperl_util.h (revision 635455)
+++ src/modules/perl/modperl_util.h (working copy)
@@ -149,6 +149,6 @@
SV *modperl_pnotes(pTHX_ HV **pnotes, SV *key, SV *val,
request_rec *r, conn_rec *c);
=20
-U16 *modperl_code_attrs(pTHX_ CV *cv);
+U32 *modperl_code_attrs(pTHX_ CV *cv);
=20
#endif /* MODPERL_UTIL_H */
Index: xs/Apache2/Filter/Apache2__Filter.h
==================== =====3D=
==================== =====3D=
=================3D
--- xs/Apache2/Filter/Apache2__Filter.h (revision 635455)
+++ xs/Apache2/Filter/Apache2__Filter.h (working copy)
@@ -86,7 +86,7 @@
return len;
}
=20
-static MP_INLINE U16 *modperl_filter_attributes(pTHX_ SV *package, SV *c=
vrv)
+static MP_INLINE U32 *modperl_filter_attributes(pTHX_ SV *package, SV *c=
vrv)
{
return modperl_code_attrs(aTHX_ (CV*)SvRV(cvrv));
}
@@ -118,7 +118,7 @@
MP_STATIC XS(MPXS_modperl_filter_attributes)
{
dXSARGS;
- U16 *attrs =3D modperl_filter_attributes(aTHX_ ST(0), ST(1));
+ U32 *attrs =3D modperl_filter_attributes(aTHX_ ST(0), ST(1));
I32 i;
#ifdef MP_TRACE
HV *stash =3D gv_stashsv(ST(0), TRUE);
Index: xs/tables/current/ModPerl/FunctionTable.pm
==================== =====3D=
==================== =====3D=
=================3D
--- xs/tables/current/ModPerl/FunctionTable.pm (revision 635455)
+++ xs/tables/current/ModPerl/FunctionTable.pm (working copy)
@@ -1239,7 +1239,7 @@
]
},
{
- 'return_type' =3D> 'U16 *',
+ 'return_type' =3D> 'U32 *',
'name' =3D> 'modperl_code_attrs',
'args' =3D> [
{
--------------060203020806080301080005--
--------------enig326C99D2B00B72F6CEF13911
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFH1h55yzKhB4jDpaURAqR+AKCjgP8BhVOpeSdXIbs/5ZQYXWqCtwCf RsIN
ExHgQuhMzvu75pJnb3gWc+c=
=YByt
-----END PGP SIGNATURE-----
--------------enig326C99D2B00B72F6CEF13911--
Re: [mp2] Perl 5.10 fixes from SVN cause SIGBUS on sparc
am 12.03.2008 08:41:00 von Niko Tyni
--G4iJoqBmSsgzjUCe
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
On Mon, Mar 10, 2008 at 10:53:54PM -0700, Philippe M. Chiasson wrote:
> >>Niko Tyni wrote:
> >>>We're switching to Perl 5.10 in Debian soon, and I'm trying to update the
> >>>mod_perl2 package to keep it working. Unfortunately the ModPerl-Registry
> >>>test suite is failing on the Sparc architecture because apache2 is killed
> >>>by a bus error (SIGBUS).
> How about this s/U16/U32/ diff, basically keeping the flag type at U32,
> since it was not an essential part of the fix itself.
No, that doesn't help either.
It turns out the U16/U32 thing was a bad guess on my part. After
some code staring and debugging, I found the real bug. It's not
architecture-specific really, it just happens to bite worst on Sparc.
The non-void function modperl_thx_interp_get() function is doing a
plain 'return;' when it means to 'return NULL;'. The result is that the
MP_APR_POOL_SV_TAKES_OWNERSHIP() macro increments a more or less random
memory location, in this case my_perl->tScopestack aka. PL_scopestack,
making it non-aligned as a side effect.
Patch attached; this fixes the bus error for me.
Cheers,
--
Niko Tyni ntyni@debian.org
--G4iJoqBmSsgzjUCe
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="468327.patch"
Index: src/modules/perl/modperl_interp.c
============================================================ =======
--- src/modules/perl/modperl_interp.c (revision 635485)
+++ src/modules/perl/modperl_interp.c (working copy)
@@ -581,7 +581,7 @@
modperl_interp_t *interp;
dTHXa(thx);
SV **svp = hv_fetch(PL_modglobal, MP_THX_INTERP_KEY, strlen(MP_THX_INTERP_KEY), 0);
- if (!svp) return;
+ if (!svp) return NULL;
interp = INT2PTR(modperl_interp_t *, SvIV(*svp));
return interp;
}
--G4iJoqBmSsgzjUCe--
Re: [mp2] Perl 5.10 fixes from SVN cause SIGBUS on sparc
am 13.03.2008 06:25:07 von gozer
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enigDFF3B29725E85375E3B474C1
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
Niko Tyni wrote:
> On Mon, Mar 10, 2008 at 10:53:54PM -0700, Philippe M. Chiasson wrote:
>=20
>>>> Niko Tyni wrote:
>>>>> We're switching to Perl 5.10 in Debian soon, and I'm trying to upda=
te the
>>>>> mod_perl2 package to keep it working. Unfortunately the ModPerl-Reg=
istry
>>>>> test suite is failing on the Sparc architecture because apache2 is =
killed
>>>>> by a bus error (SIGBUS).
>=20
>> How about this s/U16/U32/ diff, basically keeping the flag type at U32=
,
>> since it was not an essential part of the fix itself.
>=20
> No, that doesn't help either.
>=20
> It turns out the U16/U32 thing was a bad guess on my part. After
> some code staring and debugging, I found the real bug. It's not
> architecture-specific really, it just happens to bite worst on Sparc.
Thanks a lot for the debugging work!
Committed revision 636631.
--=20
Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectoplasm.org/ m/gozer\@(apache|cpan|ectoplasm)\.org/
--------------enigDFF3B29725E85375E3B474C1
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFH2LqzyzKhB4jDpaURApLxAKClLNGZjEkiQRJgIALsi1qLoRlc6gCg gm7+
Y90W9YnbHKrx72x5yPGy9qw=
=s5Gr
-----END PGP SIGNATURE-----
--------------enigDFF3B29725E85375E3B474C1--