[CONPY-65] segfault at [..] error 4 in libmariadb.so Created: 2020-05-13  Updated: 2020-05-13

Status: Open
Project: MariaDB Connector/Python
Component/s: None
Affects Version/s: 0.9.58
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Oophoo6s Assignee: Georg Richter
Resolution: Unresolved Votes: 0
Labels: None
Environment:

libmariadb3:amd64 1:10.3.22-0+deb10u1
libmariadbclient-dev:amd64 1:10.3.22-0+deb10u1
python3 3.7.3-1
Debian 10.4



 Description   

I get such segfaults after my script runs for around ten hours:

May 13 21:23:06 xoxoxoxo kernel: [190672.236709] python3[19610]: segfault at 7fb0a802101e ip 00007fb0b7c85487 sp 00007fb0b59173e0 error 4 in libmariadb.so.3[7fb0b7c74000+23000]
May 13 21:23:06 xoxoxoxo kernel: [190672.241290] Code: 70 48 85 c0 0f 84 2b ff ff ff 8b 53 64 85 d2 0f 84 20 ff ff ff 31 c9 31 d2 eb 0c 0f 1f 84 00 00 00 00 00 48 8b 43 70 48 01 c8 <80> 78 66 00 74 04 c6 40 66 00 8b 43 64 48 83 c2 01 48 83 c1 70 48

#!/usr/bin/env python3
# pymilter  1.0.3
# mariadb   0.9.58
 
import Milter
import mariadb
 
MAIL_RATE_DB = 'mail_rate_statistics'
MAIL_RATE_TBL = 'mail_counter'
 
def main():
    dbconn = initialize_database()
    socketname = "/var/run/milters/mail_rate_milter.sock"
    timeout = 300
    Milter.factory = MailRateMilter
    Milter.factory.dbconn = dbconn
    Milter.set_exception_policy(Milter.CONTINUE)
    Milter.runmilter("mail_rate_milter", socketname, timeout)
 
def initialize_database():
    dbconn = mariadb.connect(host='localhost', database='{}'.format(MAIL_RATE_DB))
    dbconn.auto_reconnect = True
    return dbconn
 
class MailRateMilter(Milter.Base):
    def __init__(self):
        self.id = Milter.uniqueID()
        self.server = str()
 
    @Milter.noreply
    def hello(self, hostname):
        self.server = hostname
        return Milter.CONTINUE
 
    @Milter.noreply
    def envfrom(self, f, *str):
        self.add_addr_to_rate_db(f)
        return Milter.ACCEPT
 
    def add_addr_to_rate_db(self, mail_from):
        self.dbconn.ping()
        account = mail_from.strip('<>').partition('@')[0]
        domain = mail_from.strip('<>').partition('@')[2]
        dbcurs = self.dbconn.cursor()
        sql = "INSERT INTO {} VALUES (CURRENT_TIMESTAMP(3), ?, ?, ?, ?)".format(MAIL_RATE_TBL)
        dbcurs.execute(sql, (mail_from.strip('<>'), account, domain, self.server))
 
if __name__=="__main__":
    main()


Generated at Thu Feb 08 03:29:59 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.