Skip to content

Segmentation fault in get_pandora_connection, when a login configuration file exists for the user. #78

@TCLamnidis

Description

@TCLamnidis

The recommended way for mysql to store and provide authentication credentials during connection is to create a configuration file that contains the information in an obfuscated way. This information is then stored in a file named ~/.mylogin.cnf, which gets automatically picked up when running an SQL query.

Currently, when such a file is present, sidora.core::get_pandora_connection creates a segmentation error:

> sidora.core::get_pandora_connection("/home/thiseas_christos_lamnidis/Software/github/Schiffels-Popgen/MICROSCOPE-processing-pipeline/.credentials")

 *** caught segfault ***
address 0x10, cause 'memory not mapped'

Traceback:
 1: connection_create(host, username, password, dbname, as.integer(port),     unix.socket, as.integer(client.flag), group, default.file,     ssl.key, ssl.cert, ssl.ca, ssl.capath, ssl.cipher, timeout,     reconnect)
 2: .local(drv, ...)
 3: DBI::dbConnect(RMariaDB::MariaDB(), host = creds[1], port = creds[2],     user = creds[3], password = creds[4], db = "pandora")
 4: DBI::dbConnect(RMariaDB::MariaDB(), host = creds[1], port = creds[2],     user = creds[3], password = creds[4], db = "pandora")
 5: sidora.core::get_pandora_connection("/home/thiseas_christos_lamnidis/Software/github/Schiffels-Popgen/MICROSCOPE-processing-pipeline/.credentials")

Renaming the ~/mylogin.cnf file to something else fixed the issue.

This suggests that DBI::dbConnect implicitly calls mysql, which loads the configuration file, causing the segfault.

Maybe we should allow users to specify a login-path in get_pandora_connection, instead of a credential file, to allow usage with such a .cnf file.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions