Servercrash durch einen Chat Befehl, fehlermeldung float

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag!


    Mein Server stürzt mehrmals am Tag durch einen Befehl ab. Sollte es der Befehl sein, der dort angezeigt wird, passiert dies aber nicht immer. Das Komische: crashdetect gibt "playerid=32" aus, obwohl ich nichtmal eine Spieler ID mit 32 zu dem Zeitpunkt habe. Doch sollte er abstürzen, durch den Befehl, was hat das mit float zu tuhen?


    Die Fehlermeldung:



    [14:05:51] [debug] AMX backtrace:
    [14:05:51] [debug] #0 0000006e in Float:operator*(Float:,_:) (Float:oper1=0.00000, oper2=-1263159297, ... <1 variable argument>) at C:\Users\Kevin\Desktop\TNS Reallife\pawno\include\float.inc:112
    [14:05:51] [debug] #1 0009cde4 in dcmd_d (playerid=32, params[]=@0x00000056 "", ... <23 variable arguments>) at C:\Users\Kevin\Desktop\Backups\TNS-Reallife Script\Backup v0.5\tns.pwn:9910
    [14:05:51] [debug] #2 0000006e in Float:operator*(Float:,_:) (Float:oper1=40564819207303340847894502572032.00000, oper2=1912602624, ... <348127230 variable arguments>) at C:\Users\Kevin\Desktop\TNS Reallife\pawno\include\float.inc:112
    [14:05:51] [debug] Native backtrace:
    [14:05:51] [debug] #0 f67a35f9 in crashdetect::PrintNativeBacktrace () from plugins/crashdetect.so
    [14:05:51] [debug] #1 f67a5c7c in crashdetect::Crash () from plugins/crashdetect.so
    [14:05:51] [debug] #2 f67ab123 in ?? () from plugins/crashdetect.so
    [14:05:51] [debug] #3 f76e3400 in ?? ()
    [14:05:51] [debug] #4 f67a6022 in crashdetect::HandleAmxExec () from plugins/crashdetect.so
    [14:05:51] [debug] #5 f67a9d1b in ?? () from plugins/crashdetect.so
    [14:05:51] [debug] #6 0806f902 in ?? () from ./samp1111_1276
    [14:05:51] [debug] #7 0807fe6c in ?? () from ./samp1111_1276
    [14:05:51] [debug] #8 080adbe1 in ?? () from ./samp1111_1276
    [14:05:51] [debug] #9 080adcd2 in ?? () from ./samp1111_1276
    [14:05:51] [debug] #10 080b79c0 in ?? () from ./samp1111_1276
    [14:05:51] [debug] #11 0807d78d in ?? () from ./samp1111_1276
    [14:05:51] [debug] #12 0807d962 in ?? () from ./samp1111_1276
    [14:05:51] [debug] #13 08077c23 in ?? () from ./samp1111_1276
    [14:05:51] [debug] #14 f7455ca6 in __libc_start_main () from /lib32/libc.so.6
    [14:05:51] [debug] #15 0804b4c1 in __gxx_personality_v0 () from ./samp1111_1276


    Der Befehl:



    dcmd_d(playerid,params[])
    {
    if(PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid, COLOR_GRAU, "Du bist gemuted!");
    if(IsGefesselt[playerid] == 1) return SendClientMessage(playerid, COLOR_GRAU, "Da du gefesselt bist, kommst du nicht an dein Funkgerät ran!");
    new text[84], string[128];
    if(sscanf(params,"s",text))
    {
    SendClientMessage(playerid,COLOR_GRAU,"Benutze: /department [Text]");
    return 1;
    }
    if(SEKDuty[playerid] == 1)
    {
    if(PlayerInfo[playerid][pSEKLevel] == 1) { format(string, sizeof(string), "SEK Insctructor %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pSEKLevel] == 2) { format(string, sizeof(string), "SEK Operator %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pSEKLevel] == 3) { format(string, sizeof(string), "SEK Sub Kommander %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pSEKLevel] == 4) { format(string, sizeof(string), "SEK Kommander %s: %s, over.", PlayerInfo[playerid][pName], text); }
    SendRadioMessage(1, COLOR_DEPARTMENT, string);
    SendRadioMessage(2, COLOR_DEPARTMENT, string);
    SendRadioMessage(3, COLOR_DEPARTMENT, string);
    SendRadioMessage(4, COLOR_DEPARTMENT, string);
    SendRadioMessage(5, COLOR_DEPARTMENT, string);
    SendRadioMessage(6, COLOR_DEPARTMENT, string);
    return 1;
    }
    else if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
    {
    if(PlayerInfo[playerid][pRang] == 1) { format(string, sizeof(string), "Cadet %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 2) { format(string, sizeof(string), "Officer %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 3) { format(string, sizeof(string), "Sergeant %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 4) { format(string, sizeof(string), "Lieutenannt %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 5) { format(string, sizeof(string), "Captain %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 6) { format(string, sizeof(string), "Chief %s: %s, over.", PlayerInfo[playerid][pName], text); }
    SendRadioMessage(1, COLOR_DEPARTMENT, string);
    SendRadioMessage(2, COLOR_DEPARTMENT, string);
    SendRadioMessage(3, COLOR_DEPARTMENT, string);
    SendRadioMessage(4, COLOR_DEPARTMENT, string);
    SendRadioMessage(5, COLOR_DEPARTMENT, string);
    SendRadioMessage(6, COLOR_DEPARTMENT, string);
    return 1;
    }
    else if(PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2)
    {
    if(PlayerInfo[playerid][pRang] == 1) { format(string, sizeof(string), "New Agent %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 2) { format(string, sizeof(string), "Special Agent %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 3) { format(string, sizeof(string), "Supervisory Special Agent %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 4) { format(string, sizeof(string), "Special Agent in Charge %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 5) { format(string, sizeof(string), "Assistens Direktor %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 6) { format(string, sizeof(string), "Direktor %s: %s, over.", PlayerInfo[playerid][pName], text); }
    SendRadioMessage(1, COLOR_DEPARTMENT, string);
    SendRadioMessage(2, COLOR_DEPARTMENT, string);
    SendRadioMessage(3, COLOR_DEPARTMENT, string);
    SendRadioMessage(4, COLOR_DEPARTMENT, string);
    SendRadioMessage(5, COLOR_DEPARTMENT, string);
    SendRadioMessage(6, COLOR_DEPARTMENT, string);
    return 1;
    }
    else if(PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)
    {
    if(PlayerInfo[playerid][pRang] == 1) { format(string, sizeof(string), "Rekrut %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 2) { format(string, sizeof(string), "Soldat %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 3) { format(string, sizeof(string), "Gefreiter %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 4) { format(string, sizeof(string), "Feldwebel %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 5) { format(string, sizeof(string), "Oberst %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 6) { format(string, sizeof(string), "General %s: %s, over.", PlayerInfo[playerid][pName], text); }
    SendRadioMessage(1, COLOR_DEPARTMENT, string);
    SendRadioMessage(2, COLOR_DEPARTMENT, string);
    SendRadioMessage(3, COLOR_DEPARTMENT, string);
    SendRadioMessage(4, COLOR_DEPARTMENT, string);
    SendRadioMessage(5, COLOR_DEPARTMENT, string);
    SendRadioMessage(6, COLOR_DEPARTMENT, string);
    return 1;
    }
    else if(PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    if(PlayerInfo[playerid][pRang] == 1) { format(string, sizeof(string), "Praktikant %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 2) { format(string, sizeof(string), "Rettungshelfer %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 3) { format(string, sizeof(string), "Rettungssanitäter %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 4) { format(string, sizeof(string), "Notarzt %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 5) { format(string, sizeof(string), "Oberarzt %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 6) { format(string, sizeof(string), "Chefarzt %s: %s, over.", PlayerInfo[playerid][pName], text); }
    SendRadioMessage(1, COLOR_DEPARTMENT, string);
    SendRadioMessage(2, COLOR_DEPARTMENT, string);
    SendRadioMessage(3, COLOR_DEPARTMENT, string);
    SendRadioMessage(4, COLOR_DEPARTMENT, string);
    SendRadioMessage(5, COLOR_DEPARTMENT, string);
    SendRadioMessage(6, COLOR_DEPARTMENT, string);
    return 1;
    }
    else if(PlayerInfo[playerid][pMember] == 5 || PlayerInfo[playerid][pLeader] == 5)
    {
    if(PlayerInfo[playerid][pRang] == 1) { format(string, sizeof(string), "Praktikant %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 2) { format(string, sizeof(string), "Auszubildender %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 3) { format(string, sizeof(string), "Mitarbeiter %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 4) { format(string, sizeof(string), "Personalchef %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 5) { format(string, sizeof(string), "Manager %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 6) { format(string, sizeof(string), "Vorsitzender %s: %s, over.", PlayerInfo[playerid][pName], text); }
    SendRadioMessage(1, COLOR_DEPARTMENT, string);
    SendRadioMessage(2, COLOR_DEPARTMENT, string);
    SendRadioMessage(3, COLOR_DEPARTMENT, string);
    SendRadioMessage(4, COLOR_DEPARTMENT, string);
    SendRadioMessage(5, COLOR_DEPARTMENT, string);
    SendRadioMessage(6, COLOR_DEPARTMENT, string);
    return 1;
    }
    else if(PlayerInfo[playerid][pMember] == 6 || PlayerInfo[playerid][pLeader] == 6)
    {
    if(PlayerInfo[playerid][pRang] == 1) { format(string, sizeof(string), "Außenminister %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 2) { format(string, sizeof(string), "Verkehrsminister %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 3) { format(string, sizeof(string), "Finanzminister %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 4) { format(string, sizeof(string), "Verteidigungsminister %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 5) { format(string, sizeof(string), "Bundespräsident %s: %s, over.", PlayerInfo[playerid][pName], text); }
    else if(PlayerInfo[playerid][pRang] == 6) { format(string, sizeof(string), "Bundeskanzler %s: %s, over.", PlayerInfo[playerid][pName], text); }
    SendRadioMessage(1, COLOR_DEPARTMENT, string);
    SendRadioMessage(2, COLOR_DEPARTMENT, string);
    SendRadioMessage(3, COLOR_DEPARTMENT, string);
    SendRadioMessage(4, COLOR_DEPARTMENT, string);
    SendRadioMessage(5, COLOR_DEPARTMENT, string);
    SendRadioMessage(6, COLOR_DEPARTMENT, string);
    return 1;
    }
    else return SendClientMessage(playerid, COLOR_GRAU, "Du bist kein Mitglieds des Department Teams!");
    }


    Ich hoffe, mir kann jemand helfen!


    -------------------------------------------

    Mit freundlichen Grüßen,
    Shanon aka. Scriptor!

  • Hm es könnte auch davon kommen da du immer dne selben string benutzt.
    Ab und zu kommt es auf jedem Server zu kleine Laggs und dort kann es auch dazu kommen das etwas falsch zu geordnet wird da pawn step for step arbeitet
    ich geh mal davon aus dies auch nicht anders ist als bei mysql bei der datenverarbeitung.


    //Edit dazu will ich noch anmerken das sowas jedoch selten vorkommt aber es kann vorkommen

  • Hm es könnte auch davon kommen da du immer dne selben string benutzt.


    Daran kann es nicht liegen ;)


    Ich benutze den stock sscanf!


    Dann liegt es, wie ich mir gedacht hab, an sscanf.
    Update mal auf das Plugin und gib die Größe in der Funktion an
    sprich
    if(sscanf(params,"s[84]",text)) //blabla

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • Hm weil mir wurde sowas vor kurzem mal gesagt das es dazu kommen kann das deswegen der Server abkratzen kann , wenn sich die strings zu langsam gerade durch verarbeitungsdauer und laggs
    falsch zugeordnet werden können da sie sich danach zu langsam überschreiben. Ist da eigentlich überhaupt was dran?

  • Ist da eigentlich überhaupt was dran?


    Keine Sorge da ist nichts dran.
    Wenn das jemand solche Erfahrung gemacht hat, dann hat er wohl was falsch gemacht,
    am Server oder an Laggs liegt es nicht.
    Der PAWN ist nicht auf Multithreading getrimmt, sprich Multitasking (mehere Aufgaben aufeinmal erledigen), PAWN arbeitet eher alles von oben nach unten ab.


    Der Server kratzt deswegen schon mal gar nicht ab :P
    Wer hat es dir denn vor kurzen so erzählt?

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski