Bug#1143816: faiss: autopkgtest needs update for new version of gcc-defaults: test SEGFAULTs

Aurelien Jarno <[email protected]>
Newsgroups gmane.linux.debian.devel.bugs.rc
Message-ID <[email protected]>
Hi,

On 2026-08-06 17:28, Paul Gevers wrote:
> Source: faiss
> Version: 1.13.2-1
> Severity: serious
> X-Debbugs-CC: [email protected] [email protected]
> Tags: sid forky
> User: [email protected]
> Usertags: needs-update
> Control: affects -1 src:gcc-defaults
> User: [email protected]
> Usertags: riscv64
> 
> Dear maintainer(s),
> 
> With a recent upload of gcc-defaults the autopkgtest of faiss fails in
> testing when that autopkgtest is run with the binary packages of
> gcc-defaults from unstable. It passes when run with only packages from
> testing. In tabular form:
> 
>                        pass            fail
> gcc-defaults           from testing    1.233
> faiss                  from testing    1.13.2-1
> all others             from testing    from testing
> 
> I copied some of the output at the bottom of this report.
> 
> Currently this regression is blocking the migration of gcc-defaults to
> testing [1]. Of course, gcc-defaults shouldn't just break your autopkgtest
> (or even worse, your package), but it seems to me that the change in
> gcc-defaults was intended and your package needs to update to the new
> situation.
> 
> If this is a real problem in your package (and not only in your
> autopkgtest), the right binary package(s) from gcc-defaults should really
> add a versioned Breaks on the unfixed version of (one of your) package(s).
> Note: the Breaks is nice even if the issue is only in the autopkgtest as it
> helps the migration software to figure out the right versions to combine in
> the tests.
> 
> More information about this bug and the reason for filing it can be found on
> https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation
> 
> Paul
> 
> [1] https://qa.debian.org/excuses.php?package=gcc-defaults
> 
> https://ci.debian.net/data/autopkgtest/testing/riscv64/f/faiss/74133117/log.gz
> 
> 7572s test 119
> 7572s         Start 119: HNSWTest.TEST_search_from_candidate_unbounded
> 7572s 7572s 119: Test command:
> /tmp/autopkgtest.Eu4j7u/autopkgtest_tmp/tests/build/faiss_test
> "--gtest_filter=HNSWTest.TEST_search_from_candidate_unbounded"
> "--gtest_also_run_disabled_tests"
> 7572s 119: Working Directory:
> /tmp/autopkgtest.Eu4j7u/autopkgtest_tmp/tests/build
> 7572s 119: Test timeout computed to be: 10000000
> 7572s 119: WARNING clustering 1000 points to 40 centroids: please provide at
> least 1560 training points
> 7572s 119: Running main() from ./googletest/src/gtest_main.cc
> 7572s 119: Note: Google Test filter =
> HNSWTest.TEST_search_from_candidate_unbounded
> 7572s 119: [==========] Running 1 test from 1 test suite.
> 7572s 119: [----------] Global test environment set-up.
> 7572s 119: [----------] 1 test from HNSWTest
> 7572s 119: [ RUN      ] HNSWTest.TEST_search_from_candidate_unbounded
> 7572s 119/133 Test #119: HNSWTest.TEST_search_from_candidate_unbounded
> .....................***Exception: SegFault  0.14 sec
> 
> 
> 7577s 7577s 99% tests passed, 1 tests failed out of 133
> 7577s 7577s Total Test time (real) = 444.00 sec
> 7577s 7577s The following tests FAILED:
> 7577s 	119 - HNSWTest.TEST_search_from_candidate_unbounded (SEGFAULT)
> 7577s Errors while running CTest

While the test seemed to fail reliably on the debci host, I wasn't able 
to reproduce the problem. After giving it back, it succeeded [1] with 
gcc-16, so it's not a regression, but rather an unreliable test.

I also noticed that the autopkgtest time varies quite a lot (up to a 
factor 3 for a given debci runner), so I guess the high level of 
concurrent autopkgtests job following the gcc-default upload explains 
that.

I have therefore tried to reproduce the issue under high load, and I 
have been successful. Here is the corresponding backtrace:

| GNU gdb (Debian 17.2-1+b1) 17.2
| Copyright (C) 2025 Free Software Foundation, Inc.
| License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
| This is free software: you are free to change and redistribute it.
| There is NO WARRANTY, to the extent permitted by law.
| Type "show copying" and "show warranty" for details.
| This GDB was configured as "riscv64-linux-gnu".
| Type "show configuration" for configuration details.
| For bug reporting instructions, please see:
| <https://www.gnu.org/software/gdb/bugs/>.
| Find the GDB manual and other documentation resources online at:
|     <http://www.gnu.org/software/gdb/documentation/>.
| 
| For help, type "help".
| Type "apropos word" to search for commands related to "word"...
| Reading symbols from /home/aurel32/faiss/autopkgtest_tmp/tests/build/faiss_test...
| (No debugging symbols found in /home/aurel32/faiss/autopkgtest_tmp/tests/build/faiss_test)
| [New LWP 16849]
| [New LWP 16848]
| [New LWP 16850]
| [New LWP 16851]
| [Thread debugging using libthread_db enabled]
| Using host libthread_db library "/usr/lib/riscv64-linux-gnu/libthread_db.so.1".
| Core was generated by `/home/aurel32/faiss/autopkgtest_tmp/tests/build/faiss_test --gtest_filter=HNSWT'.
| Program terminated with signal SIGSEGV, Segmentation fault.
| #0  0x0000002ad7aeb6c2 in faiss::fvec_L2sqr_batch_4(float const*, float const*, float const*, float const*, float const*, unsigned long, float&, float&, float&, float&) ()
| [Current thread is 1 (Thread 0x3faf4420e0 (LWP 16849))]
| (gdb) bt
| #0  0x0000002ad7aeb6c2 in faiss::fvec_L2sqr_batch_4(float const*, float const*, float const*, float const*, float const*, unsigned long, float&, float&, float&, float&) ()
| #1  0x0000002ad7823f0c in faiss::(anonymous namespace)::FlatL2Dis::distances_batch_4(long, long, long, long, float&, float&, float&, float&) ()
| #2  0x0000002ad79014f6 in faiss::search_neighbors_to_add(faiss::HNSW&, faiss::DistanceComputer&, std::priority_queue<faiss::HNSW::NodeDistCloser, std::vector<faiss::HNSW::NodeDistCloser, std::allocator<faiss::HNSW::NodeDistCloser> >, std::
| less<faiss::HNSW::NodeDistCloser> >&, int, float, int, faiss::VisitedTable&, bool) ()
| #3  0x0000002ad7902f94 in faiss::HNSW::add_links_starting_from(faiss::DistanceComputer&, int, int, float, int, omp_lock_t*, faiss::VisitedTable&, bool) ()
| #4  0x0000002ad79033d2 in faiss::HNSW::add_with_locks(faiss::DistanceComputer&, int, int, std::vector<omp_lock_t, std::allocator<omp_lock_t> >&, faiss::VisitedTable&, bool) ()
| #5  0x0000002ad78498b0 in faiss::(anonymous namespace)::hnsw_add_vertices(faiss::IndexHNSW&, unsigned long, unsigned long, float const*, bool, bool) [clone ._omp_fn.0] ()
| #6  0x0000003fafeeff3e in ?? () from /usr/lib/riscv64-linux-gnu/libgomp.so.1
| #7  0x0000003faf64e330 in ?? () from /usr/lib/riscv64-linux-gnu/libc.so.6
| #8  0x0000003faf69b670 in ?? () from /usr/lib/riscv64-linux-gnu/libc.so.6
| (gdb) disassemble
| Dump of assembler code for function _ZN5faiss18fvec_L2sqr_batch_4EPKfS1_S1_S1_S1_mRfS2_S2_S2_:
|    0x0000002ad7aeb59e <+0>:     ld      t2,0(sp)
|    0x0000002ad7aeb5a0 <+2>:     beqz    a5,0x2ad7aeb7e0 <_ZN5faiss18fvec_L2sqr_batch_4EPKfS1_S1_S1_S1_mRfS2_S2_S2_+578>
|    0x0000002ad7aeb5a4 <+6>:     slli    a5,a5,0x2
|    0x0000002ad7aeb5a6 <+8>:     addi    t3,a5,-4
|    0x0000002ad7aeb5aa <+12>:    fmv.w.x fa5,zero
|    0x0000002ad7aeb5ae <+16>:    srli    t0,t3,0x2
|    0x0000002ad7aeb5b2 <+20>:    addi    t1,t0,1
|    0x0000002ad7aeb5b6 <+24>:    andi    t5,t1,3
|    0x0000002ad7aeb5ba <+28>:    fmv.s   ft5,fa5
|    0x0000002ad7aeb5be <+32>:    fmv.s   ft3,fa5
|    0x0000002ad7aeb5c2 <+36>:    fmv.s   fa4,fa5
|    0x0000002ad7aeb5c6 <+40>:    li      t1,0
|    0x0000002ad7aeb5c8 <+42>:    beqz    t5,0x2ad7aeb6a6 <_ZN5faiss18fvec_L2sqr_batch_4EPKfS1_S1_S1_S1_mRfS2_S2_S2_+264>
|    0x0000002ad7aeb5cc <+46>:    li      t4,1
|    0x0000002ad7aeb5ce <+48>:    beq     t5,t4,0x2ad7aeb658 <_ZN5faiss18fvec_L2sqr_batch_4EPKfS1_S1_S1_S1_mRfS2_S2_S2_+186>
|    0x0000002ad7aeb5d2 <+52>:    li      t6,2
|    0x0000002ad7aeb5d4 <+54>:    beq     t5,t6,0x2ad7aeb60e <_ZN5faiss18fvec_L2sqr_batch_4EPKfS1_S1_S1_S1_mRfS2_S2_S2_+112>
|    0x0000002ad7aeb5d8 <+58>:    flw     fa3,0(a0)
|    0x0000002ad7aeb5dc <+62>:    flw     fa4,0(a1)
|    0x0000002ad7aeb5e0 <+66>:    flw     ft1,0(a2)
|    0x0000002ad7aeb5e4 <+70>:    flw     ft0,0(a3)
|    0x0000002ad7aeb5e8 <+74>:    flw     fa2,0(a4)
|    0x0000002ad7aeb5ec <+78>:    fsub.s  ft2,fa3,fa4
|    0x0000002ad7aeb5f0 <+82>:    fsub.s  ft3,fa3,ft1
|    0x0000002ad7aeb5f4 <+86>:    fsub.s  ft4,fa3,ft0
|    0x0000002ad7aeb5f8 <+90>:    fsub.s  ft6,fa3,fa2
|    0x0000002ad7aeb5fc <+94>:    li      t1,4
|    0x0000002ad7aeb5fe <+96>:    fmadd.s fa4,ft2,ft2,fa5
|    0x0000002ad7aeb602 <+100>:   fmadd.s ft3,ft3,ft3,fa5
|    0x0000002ad7aeb606 <+104>:   fmadd.s ft5,ft4,ft4,fa5
|    0x0000002ad7aeb60a <+108>:   fmadd.s fa5,ft6,ft6,fa5
|    0x0000002ad7aeb60e <+112>:   add     t0,a0,t1
|    0x0000002ad7aeb612 <+116>:   add     t3,a1,t1
|    0x0000002ad7aeb616 <+120>:   add     t5,a2,t1
|    0x0000002ad7aeb61a <+124>:   add     t4,a3,t1
|    0x0000002ad7aeb61e <+128>:   add     t6,a4,t1
|    0x0000002ad7aeb622 <+132>:   flw     ft7,0(t0)
|    0x0000002ad7aeb626 <+136>:   flw     fa0,0(t3)
|    0x0000002ad7aeb62a <+140>:   flw     fa1,0(t5)
|    0x0000002ad7aeb62e <+144>:   flw     fa6,0(t4)
|    0x0000002ad7aeb632 <+148>:   flw     fa7,0(t6)
|    0x0000002ad7aeb636 <+152>:   fsub.s  ft8,ft7,fa0
|    0x0000002ad7aeb63a <+156>:   fsub.s  ft9,ft7,fa1
|    0x0000002ad7aeb63e <+160>:   fsub.s  ft10,ft7,fa6
|    0x0000002ad7aeb642 <+164>:   fsub.s  ft11,ft7,fa7
|    0x0000002ad7aeb646 <+168>:   addi    t1,t1,4
|    0x0000002ad7aeb648 <+170>:   fmadd.s fa4,ft8,ft8,fa4
|    0x0000002ad7aeb64c <+174>:   fmadd.s ft3,ft9,ft9,ft3
|    0x0000002ad7aeb650 <+178>:   fmadd.s ft5,ft10,ft10,ft5
|    0x0000002ad7aeb654 <+182>:   fmadd.s fa5,ft11,ft11,fa5
|    0x0000002ad7aeb658 <+186>:   add     t0,a0,t1
|    0x0000002ad7aeb65c <+190>:   add     t3,a1,t1
|    0x0000002ad7aeb660 <+194>:   add     t5,a2,t1
|    0x0000002ad7aeb664 <+198>:   add     t4,a3,t1
|    0x0000002ad7aeb668 <+202>:   add     t6,a4,t1
|    0x0000002ad7aeb66c <+206>:   flw     fa3,0(t0)
|    0x0000002ad7aeb670 <+210>:   flw     ft1,0(t3)
|    0x0000002ad7aeb674 <+214>:   flw     ft2,0(t5)
|    0x0000002ad7aeb678 <+218>:   flw     fa2,0(t4)
|    0x0000002ad7aeb67c <+222>:   flw     ft0,0(t6)
|    0x0000002ad7aeb680 <+226>:   fsub.s  ft4,fa3,ft1
|    0x0000002ad7aeb684 <+230>:   fsub.s  ft6,fa3,ft2
|    0x0000002ad7aeb688 <+234>:   fsub.s  ft7,fa3,fa2
|    0x0000002ad7aeb68c <+238>:   fsub.s  fa0,fa3,ft0
|    0x0000002ad7aeb690 <+242>:   addi    t1,t1,4
|    0x0000002ad7aeb692 <+244>:   fmadd.s fa4,ft4,ft4,fa4
|    0x0000002ad7aeb696 <+248>:   fmadd.s ft3,ft6,ft6,ft3
|    0x0000002ad7aeb69a <+252>:   fmadd.s ft5,ft7,ft7,ft5
|    0x0000002ad7aeb69e <+256>:   fmadd.s fa5,fa0,fa0,fa5
|    0x0000002ad7aeb6a2 <+260>:   beq     a5,t1,0x2ad7aeb7cc <_ZN5faiss18fvec_L2sqr_batch_4EPKfS1_S1_S1_S1_mRfS2_S2_S2_+558>
|    0x0000002ad7aeb6a6 <+264>:   add     t0,a0,t1
|    0x0000002ad7aeb6aa <+268>:   add     t3,a1,t1
|    0x0000002ad7aeb6ae <+272>:   flw     fa6,0(t0)
|    0x0000002ad7aeb6b2 <+276>:   flw     fa7,0(t3)
|    0x0000002ad7aeb6b6 <+280>:   add     t5,a2,t1
|    0x0000002ad7aeb6ba <+284>:   add     t6,a4,t1
|    0x0000002ad7aeb6be <+288>:   flw     ft8,0(t5)
| => 0x0000002ad7aeb6c2 <+292>:   flw     ft9,0(t6)
|    0x0000002ad7aeb6c6 <+296>:   add     t4,a3,t1
|    0x0000002ad7aeb6ca <+300>:   fsub.s  ft10,fa6,fa7
|    0x0000002ad7aeb6ce <+304>:   flw     fa1,0(t4)
|    0x0000002ad7aeb6d2 <+308>:   add     t3,a0,t1
|    0x0000002ad7aeb6d6 <+312>:   add     t5,a1,t1
|    0x0000002ad7aeb6da <+316>:   flw     fa0,4(t3)
|    0x0000002ad7aeb6de <+320>:   fsub.s  ft11,fa6,ft8
|    0x0000002ad7aeb6e2 <+324>:   fsub.s  fa3,fa6,ft9
|    0x0000002ad7aeb6e6 <+328>:   flw     fa2,4(t5)
|    0x0000002ad7aeb6ea <+332>:   fsub.s  ft7,fa6,fa1
|    0x0000002ad7aeb6ee <+336>:   add     t6,a2,t1
|    0x0000002ad7aeb6f2 <+340>:   add     t4,a3,t1
|    0x0000002ad7aeb6f6 <+344>:   add     t0,a4,t1
|    0x0000002ad7aeb6fa <+348>:   fmadd.s ft2,ft10,ft10,fa4
|    0x0000002ad7aeb6fe <+352>:   flw     ft1,4(t6)
|    0x0000002ad7aeb702 <+356>:   fsub.s  fa4,fa0,fa2
|    0x0000002ad7aeb706 <+360>:   flw     ft0,4(t4)
|    0x0000002ad7aeb70a <+364>:   flw     ft6,4(t0)
|    0x0000002ad7aeb70e <+368>:   add     t5,a0,t1
|    0x0000002ad7aeb712 <+372>:   add     t6,a1,t1
|    0x0000002ad7aeb716 <+376>:   fmadd.s ft4,ft11,ft11,ft3
|    0x0000002ad7aeb71a <+380>:   fmadd.s ft10,fa3,fa3,fa5
|    0x0000002ad7aeb71e <+384>:   flw     ft11,8(t6)
|    0x0000002ad7aeb722 <+388>:   flw     fa5,8(t5)
|    0x0000002ad7aeb726 <+392>:   fmadd.s ft3,ft7,ft7,ft5
|    0x0000002ad7aeb72a <+396>:   fsub.s  ft9,fa0,ft6
|    0x0000002ad7aeb72e <+400>:   fsub.s  fa6,fa0,ft1
|    0x0000002ad7aeb732 <+404>:   fsub.s  fa7,fa0,ft0
|    0x0000002ad7aeb736 <+408>:   add     t0,a2,t1
|    0x0000002ad7aeb73a <+412>:   add     t4,a3,t1
|    0x0000002ad7aeb73e <+416>:   add     t3,a4,t1
|    0x0000002ad7aeb742 <+420>:   fmadd.s ft8,fa4,fa4,ft2
|    0x0000002ad7aeb746 <+424>:   fsub.s  fa3,fa5,ft11
|    0x0000002ad7aeb74a <+428>:   flw     fa1,8(t0)
|    0x0000002ad7aeb74e <+432>:   flw     ft7,8(t4)
|    0x0000002ad7aeb752 <+436>:   flw     ft5,8(t3)
|    0x0000002ad7aeb756 <+440>:   fmadd.s fa4,ft9,ft9,ft10
|    0x0000002ad7aeb75a <+444>:   fmadd.s ft1,fa6,fa6,ft4
|    0x0000002ad7aeb75e <+448>:   fsub.s  ft6,fa5,fa1
|    0x0000002ad7aeb762 <+452>:   fmadd.s ft0,fa7,fa7,ft3
|    0x0000002ad7aeb766 <+456>:   fsub.s  fa2,fa5,ft7
|    0x0000002ad7aeb76a <+460>:   fsub.s  fa6,fa5,ft5
|    0x0000002ad7aeb76e <+464>:   add     t0,a0,t1
|    0x0000002ad7aeb772 <+468>:   add     t6,a1,t1
|    0x0000002ad7aeb776 <+472>:   add     t5,a2,t1
|    0x0000002ad7aeb77a <+476>:   add     t4,a3,t1
|    0x0000002ad7aeb77e <+480>:   add     t3,a4,t1
|    0x0000002ad7aeb782 <+484>:   flw     fa7,12(t0)
|    0x0000002ad7aeb786 <+488>:   fmadd.s fa0,fa3,fa3,ft8
|    0x0000002ad7aeb78a <+492>:   flw     ft3,12(t3)
|    0x0000002ad7aeb78e <+496>:   flw     ft4,12(t6)
|    0x0000002ad7aeb792 <+500>:   flw     ft8,12(t5)
|    0x0000002ad7aeb796 <+504>:   flw     ft2,12(t4)
|    0x0000002ad7aeb79a <+508>:   fmadd.s fa5,fa6,fa6,fa4
|    0x0000002ad7aeb79e <+512>:   fsub.s  fa3,fa7,ft3
|    0x0000002ad7aeb7a2 <+516>:   fsub.s  ft9,fa7,ft4
|    0x0000002ad7aeb7a6 <+520>:   fmadd.s ft10,ft6,ft6,ft1
|    0x0000002ad7aeb7aa <+524>:   fsub.s  ft11,fa7,ft8
|    0x0000002ad7aeb7ae <+528>:   fmadd.s fa1,fa2,fa2,ft0
|    0x0000002ad7aeb7b2 <+532>:   fsub.s  ft7,fa7,ft2
|    0x0000002ad7aeb7b6 <+536>:   addi    t1,t1,16
|    0x0000002ad7aeb7b8 <+538>:   fmadd.s fa4,ft9,ft9,fa0
|    0x0000002ad7aeb7bc <+542>:   fmadd.s ft3,ft11,ft11,ft10
|    0x0000002ad7aeb7c0 <+546>:   fmadd.s fa5,fa3,fa3,fa5
|    0x0000002ad7aeb7c4 <+550>:   fmadd.s ft5,ft7,ft7,fa1
|    0x0000002ad7aeb7c8 <+554>:   bne     a5,t1,0x2ad7aeb6a6 <_ZN5faiss18fvec_L2sqr_batch_4EPKfS1_S1_S1_S1_mRfS2_S2_S2_+264>
|    0x0000002ad7aeb7cc <+558>:   fsw     fa4,0(a6)
|    0x0000002ad7aeb7d0 <+562>:   ld      a0,8(sp)
|    0x0000002ad7aeb7d2 <+564>:   fsw     ft3,0(a7)
|    0x0000002ad7aeb7d6 <+568>:   fsw     ft5,0(t2)
|    0x0000002ad7aeb7da <+572>:   fsw     fa5,0(a0)
|    0x0000002ad7aeb7de <+576>:   ret
|    0x0000002ad7aeb7e0 <+578>:   fmv.w.x fa5,zero
|    0x0000002ad7aeb7e4 <+582>:   ld      a0,8(sp)
|    0x0000002ad7aeb7e6 <+584>:   fmv.s   fa4,fa5
|    0x0000002ad7aeb7ea <+588>:   fmv.s   ft3,fa5
|    0x0000002ad7aeb7ee <+592>:   fmv.s   ft5,fa5
|    0x0000002ad7aeb7f2 <+596>:   fsw     fa4,0(a6)
|    0x0000002ad7aeb7f6 <+600>:   fsw     ft3,0(a7)
|    0x0000002ad7aeb7fa <+604>:   fsw     ft5,0(t2)
|    0x0000002ad7aeb7fe <+608>:   fsw     fa5,0(a0)
|    0x0000002ad7aeb802 <+612>:   ret

At this stage, I haven't debugged it further. I'll try to see if I can 
reproduce the issue on another architecture. Given it's not a 
regression, I guess the severity can be decreased.

Regards
Aurelien

[1] https://ci.debian.net/packages/f/faiss/testing/riscv64/74151428/

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
[email protected]                     http://aurel32.net
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEUryGlb40+QrX1Ay4E4jA+JnoM2sFAmp2PoQACgkQE4jA+Jno
M2s42Q/6Ahqequ0CiVtHTsy/MePisqi/C54H3DPqaEGdKEy5IJHCEwvm1DrJq5nn
pDRBXQcWrqAyq0ugBg0sNij//nU6U5zrOH/NQrJuQZCvOILgB24D2gs9ur1n4Bca
Q5fhAaKSg5fS/OEw+HwlEd8nHHDY8PUNYsOswAjE4i8jq7gxVN5bxhtnMD2SVovL
Wtf85bFdFFmyaGI8HsRP1U/OUxroFwOuh/6s7SPCdRTQKWdE766MrkkbTK6HD4zg
5Yz4Q1vGgIjrrMi+iaS/NK8GahAedFCBPnhmk4rJmR00roLQHkaTX6fm3500875J
lPNDoomqODoHfhNcR1yZwNIX8KlsHpYg++/qPiQewR/+I+GYBV9fmCI3yer25NKe
y6Tkn2pYQd8IQHY1f34g64UFQRcDmExXr8JMTnYMg3QminYx1Fwx3WtvQxh9NKPw
tOpGSUUUeEjtKXs7GQjDmjvYvolVChtvRBz4jMdx739i7RWNRTH1uLOQ6mUV8unU
PPwqdIyBssDoF56DqJqmTPRn7a11QSImcy1iZjEPRG/L2Cn7+Qyc4paXB5LmqDRj
Xax3uSWDAn6bg+Mh54hO4w0sCfNasSaeQmDdPhfdCzWr15lF6eyNf/ilClal4Tfd
GqjrayxT2ZYyRuAJeHIerv3TY6UpFd5QDRodsK9OSJZlCz4os6E=
=PEvv
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.