Bonjour,
j'ai mon eggdrop qui crash suite à une condition qui utilise mysqltcl.
Je ne sais pas d'où ça peut provenir , j'ai essayé de régler le problème en mettant à jour eggdrop sur la 1.9.1 , sans succès.
Dans l'erreur il stipule la proc ::checkpays::who:gestion je pense du fait que j'envoie depuis cette proc des variables pour la proc monitoring
Ensuite ma proc du monitoring avec la condition qui pose problème :
Mon putlog récupère bien toutes les variables.
Quand je retire la condition, l'eggdrop ne crash plus.
Ma procédure de connection à ma base sql :
ça provient peut être de mysqltcl ? Je ne sais pas , si quelqu'un à une idée :)
j'ai mon eggdrop qui crash suite à une condition qui utilise mysqltcl.
Quote:[16:20:07] monitoring : Amand / * / Test / 1 / 1 / 80 / FR / Testoune
[16:20:07] * Last context: tclhash.c/734 [Tcl proc: ::checkpays::who:gestion, param: $_raw1 $_raw2 $_raw3]
[16:20:07] * Please REPORT this BUG!
[16:20:07] * Check doc/BUG-REPORT on how to do so.
[16:20:07] * Wrote DEBUG
[16:20:07] * SEGMENT VIOLATION -- CRASHING!
[16:20:07] Received close notify warning during write
Segmentation fault
Je ne sais pas d'où ça peut provenir , j'ai essayé de régler le problème en mettant à jour eggdrop sur la 1.9.1 , sans succès.
Dans l'erreur il stipule la proc ::checkpays::who:gestion je pense du fait que j'envoie depuis cette proc des variables pour la proc monitoring
Code:
::checkpays::monitoring $nick $ip $username $sslco $webirc $reputation $codepays $realname
tcl
proc ::checkpays::monitoring {nick ip username sslco webirc reputation codepays realname} {
set SESSION [md5 $nick]
putlog "monitoring : $nick / $ip / $username / $sslco / $webirc / $reputation / $codepays / $realname"
## CONDITION QUI POSE PROBLÈME
if {$codepays eq ""} {
set qverif "SELECT * FROM logsusers WHERE codepays='unk' AND nick='$nick' AND username='$username' AND ip='$ip' AND realname='[mysqlescape $realname]' AND webirc='$webirc' AND sslco='$sslco'"
set query "INSERT INTO logsusers (codepays, nick, username, ip, realname, webirc, sslco) VALUES ('unk', '$nick', '$username', '$ip', '[mysqlescape $realname]', '$webirc', '$sslco')"
::checkpays::service:connect
set verif [::mysql::sel $::mysqlink $qverif]
if {$verif != 0} {
::checkpays::service:deconnect
return 0
}
set res [::mysql::exec $::mysqlink $query]
::checkpays::service:deconnect
} else {
set qverif "SELECT * FROM logsusers WHERE codepays='$codepays' AND nick='$nick' AND username='$username' AND ip='$ip' AND realname='[mysqlescape $realname]' AND webirc='$webirc' AND sslco='$sslco'"
set query "INSERT INTO logsusers (codepays, nick, username, ip, realname, webirc, sslco) VALUES ('$codepays', '$nick', '$username', '$ip', '[mysqlescape $realname]', '$webirc', '$sslco')"
::checkpays::service:connect
set verif [::mysql::sel $::mysqlink $qverif]
if {$verif != 0} {
::checkpays::service:deconnect
return 0
}
set res [::mysql::exec $::mysqlink $query]
::checkpays::service:deconnect
}
# Suppression des valeurs en mémoire.
# https://www.astro.princeton.edu/~rhl/Tcl-Tk_docs/tcl/unset.n.html
unset ::checkpays::DB($SESSION,USERNAME)
unset ::checkpays::DB($SESSION,IP)
unset ::checkpays::DB($SESSION,REPUTATION)
unset ::checkpays::DB($SESSION,SSLCO)
unset ::checkpays::DB($SESSION,WEBIRC)
unset ::checkpays::DB($SESSION,CODEPAYS)
}
Mon putlog récupère bien toutes les variables.
Quand je retire la condition, l'eggdrop ne crash plus.
Ma procédure de connection à ma base sql :
tcl
proc ::checkpays::service:connect {} {
set ::mysqlink [::mysql::connect -host $::checkpays::sql(host) -user $::checkpays::sql(login) -password $::checkpays::sql(pass) -encoding binary]
::mysql::use $::mysqlink $::checkpays::sql(db)
}
proc ::checkpays::service:deconnect {} {
::mysql::close $::mysqlink; unset -nocomplain ::mysqlink
}
ça provient peut être de mysqltcl ? Je ne sais pas , si quelqu'un à une idée :)