pBlueG / SA-MP-MySQL

MySQL plugin for San Andreas Multiplayer
BSD 3-Clause "New" or "Revised" License
196 stars 80 forks source link

logcore print > 0XC0000005 (ACCESS_VIOLATION) from Vectored Exception Handler catched #212

Closed sMexFalco closed 5 years ago

sMexFalco commented 5 years ago

i ran a test for table_player_list a vary basic test using a filterscript

#define FILTERSCRIPT

#include    <a_samp>
#include    <a_mysql>

#include    <izcmd>
#include    <sscanf2>

#if !defined WP_Hash
    native WP_Hash(buffer[], len, const str[]);
#endif

#define     MYSQL_HOST          "localhost"
#define     MYSQL_USER          "root"
#define     MYSQL_PASSWORD      ""
#define     MYSQL_DATABASE      "test"

//new Cache:player_cache[MAX_PLAYERS] = MYSQL_INVALID_CACHE;
new MySQL:phpmyadmin;
new ip[MAX_PLAYERS][15+1], pname[MAX_PLAYERS][MAX_PLAYER_NAME];

public OnFilterScriptInit()
{
    phpmyadmin = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
    if(phpmyadmin != MYSQL_DEFAULT_HANDLE || mysql_errno(phpmyadmin) != _:MYSQL_INVALID_HANDLE)
        return _:MYSQL_INVALID_HANDLE;
    else
        return _:MYSQL_DEFAULT_HANDLE;
}

public OnFilterScriptExit()
{
    if(mysql_errno(phpmyadmin) != _:MYSQL_INVALID_HANDLE)
        mysql_close(phpmyadmin);
}

public OnPlayerConnect(playerid)
{
    if(IsPlayerNPC(playerid)) return 0;

    new insert_query[128];

    GetPlayerIp(playerid, ip[playerid], 16);
    GetPlayerName(playerid, pname[playerid], MAX_PLAYER_NAME);

    mysql_format(phpmyadmin, insert_query, sizeof(insert_query), "INSERT INTO `table_player_list` (`name`, `ip`) VALUES ('%e', '%e')", pname[playerid], ip[playerid]);
    mysql_tquery(phpmyadmin, insert_query, "OnPlayerSetOnline", "d", playerid);
    return 0;
}

forward public OnPlayerSetOnline(playerid);
public OnPlayerSetOnline(playerid)
{
    new update_query[128];
    mysql_format(phpmyadmin, update_query, sizeof(update_query), "UPDATE `table_player_list` SET `online` = '1' WHERE `name` = '%e' OR `ip` = '%e' LIMIT 1", pname[playerid], ip[playerid]);
    mysql_tquery(phpmyadmin, update_query);

    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    if(IsPlayerConnected(playerid))
    {
        new update_query[128];

        GetPlayerIp(playerid, ip[playerid], 16);
        GetPlayerName(playerid, pname[playerid], MAX_PLAYER_NAME);

        mysql_format(phpmyadmin, update_query, sizeof(update_query), "UPDATE `table_player_list` SET `online` = '0' WHERE `name` = '%e' OR `ip` = '%e' LIMIT 1", pname[playerid], ip[playerid]);
        mysql_tquery(phpmyadmin, update_query, "", "");
        return 1;
    }
    return 0;
}

and printed a error in logs/errors

[04:20:07] [log-core] exception 0XC0000005 (ACCESS_VIOLATION) from Vectored Exception Handler catched; shutting log-core down

gm: timerstest fs: mine (mysql_admin) when i type'd gmx and hit enter server crashed using 0.3.7-R3 latest from kalcor and logs printed this message

maddinat0r commented 5 years ago

The log-core is not directly bound to the MySQL plugin. It detected a crash and shut itself down safely. That crash could've happened everywhere, it might be the MySQL plugin, it might be another plugin, or it might be something in your script. Try using crashdetect for a more detailed crash report.