[Akonadi] [Bug 439733] Akonadi server triggers assert() in libmysql 5.7.34

bugzilla_noreply at kde.org bugzilla_noreply at kde.org
Sun Jul 11 13:26:24 BST 2021


https://bugs.kde.org/show_bug.cgi?id=439733

--- Comment #2 from groot at kde.org ---
Relevant code change between 5.7.33 and 5.7.34 is in libmysql.c, line 4112:

=== 5.7.33
  case MYSQL_TYPE_BLOB:
  case MYSQL_TYPE_BIT:
    DBUG_ASSERT(param->buffer_length != 0);

=== 5.7.34
  case MYSQL_TYPE_BLOB:
  case MYSQL_TYPE_BIT:
    assert(param->buffer_length != 0);

As you can see the DBUG_ASSERT has turned into a "real" assert.

By modifying the Qt MySQL drivers, e.g. void QMYSQLResultPrivate::bindBlobs() I
can get the Qt layer to confirm that the value being passed in is 0. Apparently
max_length for the field that is causing problems here, is indeed 0. By nudging
that to 1, like so:

```
if (!bind->buffer_length) { bind->buffer_length=1;
            qWarning("QMYSQLResultPrivate::bindBlobs: field max_length was 0");
}
```

Akonadi works again (because of the patch in Qt). I'm just not convinced that's
a good fix: why is there a BLOB field of length 0, anyway?

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Kdepim-bugs mailing list