Крашит сервер после выполнения запроса
#1

Идея: просмотр состава банды/организации.

Запрос такой:
PHP код:
format(string,sizeof(string),"SELECT `Name`,`Rank`,`LastConnect` FROM `users` WHERE `FamMember` = '%d' ORDER BY `Rank` DESC",PlayerInfo[playerid][pFMember]);
mysql_function_query(mysqlid,string,true,"CheckMembers""d",playerid); 
Ф-я:
PHP код:
forward CheckMembers(a);
public 
CheckMembers(a) {
    
cache_get_data(rows,fields);
    
format(str,sizeof(str),"* Банда %s. Всего: %d. Список:",fInfo[PlayerInfo[a][pFMember]][fName],rows);
    
SendClientMessage(a,COLOR_BLUE,str);
    for(new 
irows+1i++) {
        
strdel(str,0,sizeof(str));
        
cache_get_row(i,1,str32); format(str64,sizeof(str64),"* %s",str32); strcat(str,str64);
        
cache_get_row(i,2,str32); integer strval(str32); format(str64,sizeof(str64)," (Rank: %d)",integer); strcat(str,str64);
        
cache_get_row(i,3,str32); format(str64,sizeof(str64)," - %s",str32); strcat(str,str64);
        
SendClientMessage(a,COLOR_YELLOW2,str);
    }
    
SendClientMessage(a,COLOR_BLUE,"________________________");
    return 
1;

str32,str64,integer,str,rows,fields заданы

Проблема вот в чем. Бывает, что все работает на ура, а бывает, что сервер крашит, причем второй вариант чаще. Такую информацию выдает crashdetect:
PHP код:
[04:52:03] [debugServer crashed while executing gf.amx
[04:52:03] [debugAMX backtrace:
[
04:52:03] [debug#0 native cache_get_row () [f743f7f0] from mysql.so
[04:52:03] [debug#1 00131804 in public CheckMembers () from gf.amx
[04:52:03] [debugSystem backtrace:
[
04:52:03] [debug#0 f63ebf41 in _ZN10StackTraceC1EPv () from plugins/crashdetect.so
[04:52:03] [debug#1 f63e241f in _ZN11crashdetect20PrintSystemBacktraceEPv () from plugins/crashdetect.so
[04:52:03] [debug#2 f63e0963 in _ZN11crashdetect15SystemExceptionEPv () from plugins/crashdetect.so
[04:52:03] [debug#3 f63eb3c1 in ?? () from plugins/crashdetect.so
[04:52:03] [debug#4 f775b410 in ?? ()
[04:52:03] [debug#5 f74d4916 in ?? () from /lib/libc.so.6
[04:52:03] [debug#6 f7439f4e in _ZN6StrAmx10SetCStringEP6tagAMXiPc () from plugins/mysql.so
[04:52:03] [debug#7 f743f880 in _ZN7Natives15n_cache_get_rowEP6tagAMXPi () from plugins/mysql.so
[04:52:03] [debug#8 080938e4 in ?? () from ./samp03svr
[04:52:03] [debug#9 f63e15a2 in _ZN11crashdetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so
[04:52:03] [debug#10 f63e965e in ?? () from plugins/crashdetect.so
[04:52:03] [debug#11 f63f0926 in amx_Exec () from plugins/crashdetect.so
[04:52:03] [debug#12 f63e1622 in _ZN11crashdetect9DoAmxExecEPii () from plugins/crashdetect.so
[04:52:03] [debug#13 f63e9699 in ?? () from plugins/crashdetect.so
[04:52:03] [debug#14 f74424f1 in amx_Exec () from plugins/mysql.so 
В чем может быть проблема?
Reply
#2

А что выдает лог mysql?
Reply
#3

PHP код:
[04:52:03] >> mysql_query_callbackConnection handle)
[
04:52:03Passing query SELECT `Name`,`Rank`,`LastConnectFROM `usersWHERE `FamMember` = '9' ORDER BY `RankDESC d
[04:52:03ProcessQueryThread(CheckMembers) - Query was successful. (SELECT `Name`,`Rank`,`LastConnectFROM `usersWHERE `FamMember` = '9' ORDER BY `RankDESC)
[
04:52:03ProcessQueryThread(CheckMembers) - Data caching enabled.
[
04:52:03CMySQLHandler::StoreResult() - Result was stored.
[
04:52:03CMySQLHandler::FreeResult() - Result was successfully free'd.
[04:52:03] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[04:52:03] CheckMembers(d) - Threaded function called.
[04:52:03] >> cache_get_data( Connection handle: 1 ) 
Reply
#4

Компилируй в дебаг режиме, чтобы увидеть на какую строчку жалуется.
Reply
#5

Эм, это как?
Reply
#6

Quote:
Originally Posted by Frapsy
Посмотреть сообщение
Эм, это как?
В папке pawno создай файл pawn.cfg с ключом -d3 внутри.
Reply
#7

Зачем ты переменные, используемые только в одной функции, глобально объявляешь? Да и к ряду ты несуществующему обращаешься.
PHP код:
forward CheckMembers(a); public CheckMembers(a)
{
    new 
rows 0fields 0string[64];
    
cache_get_data(rows,fields);
    
#pragma unused fields
    
format(string64,"* Банда %s. Всего: %d. Список:",fInfo[PlayerInfo[a][pFMember]][fName], rows); 
    
SendClientMessage(a,COLOR_BLUE,str); 
    for(new 
0bigst[128]; != rows; ++i
    { 
        
cache_get_row(i0string), format(bigst128 ,"* %s"string);
        
cache_get_row(i1string), strcat(bigst". Rank: "), strcat(bigststring);
        
cache_get_row(i2string), strcat(bigst". "), strcat(bigststring);
        
SendClientMessage(aCOLOR_YELLOW2bigst); 
    } 
    
SendClientMessage(a,COLOR_BLUE,"________________________"); 
    return 
true

Reply
#8

Они используются не в одной функции.
Насчет ряда спасибо, странно, что иногда, все работало верно.
Reply
#9

Все равно, если переменные объявлены глобально, они постоянно в памяти, если локально, удаляются после завершения функции
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)