Page MenuHome GnuPG

gpgme test suite failure in lang/qt/tests/t-config.cpp on mipsel
Closed, InvalidPublic

Description

gpgme 1.9.0-3 (which includes a bunch of post-1.9.0 patches) is failing to build on mipsel with this error:

PASS: t-various
********* Start testing of CryptoConfigTest *********
Config: Using QtTest library 5.9.1, Qt 5.9.1 (mips-little_endian-ilp32-o32-hardfloat shared (dynamic) release build; by GCC 7.1.0)
PASS   : CryptoConfigTest::initTestCase()

========= Received signal, dumping stack ==============
========= End of stack trace ==============
QFATAL : CryptoConfigTest::testKeyserver() Test function timed out
FAIL!  : CryptoConfigTest::testKeyserver() Received a fatal error.
   Loc: [Unknown file(0)]
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 300010ms
********* Finished testing of CryptoConfigTest *********
/bin/bash: line 5:   898 Aborted                 GNUPGHOME=/<<PKGBUILDDIR>>/lang/qt/tests ${dir}$tst
FAIL: t-config
======================================
1 of 9 tests failed
Please report to http://bugs.gnupg.org
======================================
Makefile:722: recipe for target 'check-TESTS' failed

Looking at lang/qt/tests/t-config.cpp i see:

class CryptoConfigTest: public QGpgMETest
{
    Q_OBJECT

private Q_SLOTS:
    void testKeyserver()
    {
        // Repeatedly set a config value and clear it
        // this war broken at some point so it gets a
        // unit test.
        for (int i = 0; i < 10; i++) {
            auto conf = cryptoConfig();
            QVERIFY(conf);
            auto entry = conf->entry(QStringLiteral("gpg"),
                    QStringLiteral("Keyserver"),
                    QStringLiteral("keyserver"));
            QVERIFY(entry);
            const QString url(QStringLiteral("hkp://foo.bar.baz"));
            entry->setStringValue(url);
            conf->sync(false);
            conf->clear();
            entry = conf->entry(QStringLiteral("gpg"),
                    QStringLiteral("Keyserver"),
                    QStringLiteral("keyserver"));
            QCOMPARE (entry->stringValue(), url);
            entry->setStringValue(QString());
            conf->sync(false);
            conf->clear();
            entry = conf->entry(QStringLiteral("gpg"),
                    QStringLiteral("Keyserver"),
                    QStringLiteral("keyserver"));
            QCOMPARE (entry->stringValue(), QString());
        }
    }

    void initTestCase()
    {
        QGpgMETest::initTestCase();
        const QString gpgHome = qgetenv("GNUPGHOME");
        qputenv("GNUPGHOME", mDir.path().toUtf8());
        QVERIFY(mDir.isValid());
    }
private:
    QTemporaryDir mDir;

};

This seems like an odd test -- for one thing, the gpg config var "keyserver" is deprecated these days, right? i think that's intended to be a dirmngr config var now.

Is there something specific i should ask the mipsel buildd maintainers to do to help debug this further?

Details

Version
1.9.0

Event Timeline

justus triaged this task as Normal priority.

So it fails after a timeout. Which probably means that the conf->sync calls timeout which probably means that some gpgme process call to gpgconf hangs. Maybe some IO Flush that does not happen correctly on MIPS. But this is pure guessing.

Can you run the tests with something like GPGME_DEBUG=9:/tmp/gpgme.log and add the log here? This might show us more what's ultimately hanging.

The test is for keyserver and repeated as there was a bug that showed in Kleopatra when changing the keyserver and sometimes the value was not stored / read correctly because of a gpgme_io problem. I wrote the test originally to demonstrate that problem without kleopatra.

werner added a project: Too Old.
werner added a subscriber: werner.

No info received in3 years.