-
Всього повідомлень
4 122 -
Приєднався
-
Останній візит
-
Дней в лидерах
22
Тип контенту
Профили
Форум
Календарь
Все, що було написано madf
-
Как и обещал, начинаю заниматься старгейзером. Сейчас первоочередная задача - побороть баг с падениями, описанный тут: http://local.com.ua/forum/index.php?showtopic=12719 Версия предназначена, в основном, для тестирования замены функции inet_ntoa (inet_ntostr) на thread-safe inet_ntop (inet_ntostring). Как минимум, один баг вызваный не-реэнтерабельностью inet_ntoa был отмечен ( http://local.com.ua/forum/index.php?showtopic=13828 ). Архив и короткое описание тут: http://local.com.ua/stg/Stargazer_2_ot_21.01.2009/ В первую очередь интересуют отзывы Dimension, Keen и Silitra. Все отмече
-
То есть, относится только к мускулу?
-
Нет
-
Это не глюк, это скорее фича. Но если напрягает можно сделать так: заменить в user.cpp строки (1498-1497): user->lastCashAddTime = *const_cast<time_t *>(&stgTime); user->lastCashAdd = newCash - oldCash; на if (newCash > oldCash) { user->lastCashAddTime = *const_cast<time_t *>(&stgTime); user->lastCashAdd = newCash - oldCash; }
-
Я думаю, ты что-то поломал в исходниках плагина file_store
-
Скриншотики 1.90.9
-
Чревато потерями части детальной статистики
-
В корень пишется только детальная статистика или вся база?
-
Ну что непонятно-то? Найди процесс который занимает порт авторизатора и разберись, почему он его занимает. Возможно, ты пытаешся запустить второй экземпляр старгейзера.
-
А попробуйте-ка вот это: http://local.com.ua/forum/index.php?showto...mp;#entry106287
-
один из пользователей не может подключиться
тема ответил в napTu пользователя madf в Питання по Stargazer
Хм, это проявляется для единичных пользователей? -
Кажется, кто-то уже лицензировал
-
Дело в том, что: $ find ./ -name \*cpp -exec grep inet_ntostr {} \; | wc -l 67
-
Есть результаты? Можешь кинуть мне патчи (относительно stg-2.405)?
-
А что говорит date на серваке?
-
1. На сколько неправильное время? Пару примеров, пожалуйста.
-
Проблема, которую решает патч, описана тут: http://local.com.ua/forum/index.php?showtopic=10568
-
К стати, только сейчас заметил. Твой скрипт OnDisconnect не учитывает возможность того, что правило для пользователя может быть в нескольких экземплярах в таблице (например, 2 OnConnect подряд обязательно приведут к такой ситуации). Так что скрипт, возможно, отрабатывает. Но как минимум 1 правило остается, по этому у юзера есть инет.
-
1. Переконнекчивается ли авторизатор (сам и по принуждению)? 1.1 Если нет - скажи свой мейл, я вышлю 2 патча. 1.2 Если да - через какое время он переконнекчивается сам?
-
1. Проверь скрипт OnDisconnect 2. Либо последствия падений, либо у тебя в конфиге указано запускать 5 Executers
-
Зачем ваять то что уже сделано? thread-safe - это когда функция не имеет состояния. В данном случае состоянием является буфер, в который записывается строковое представление. Для того чтобы сделать преобразование thread-safe достаточно принимать на вход внешний буфер, что и делает inet_ntop. Но дело в том, что для этого внешний буфер нужно распределить - а это усложняет использование функции. То есть, вместо, например такого: printfd(__FILE__, "IP: %s\n", inet_ntoa(ip)); Прийдется писать нечто вроде: char buff[32]; inet_ntop(AF_INET, ip, buff, 32); printfd(__FILE__, "IP: %s\n", buff); К
-
Извиняться незачто. Если бы не этот топик - вряд-ли я когда-нибуть обратил бы внимание на эту проблему. Переписать inet_ntostr на использование inet_ntop (к стати, inet_ntoa сейчас обозначена как deprecated) можно. Но она сама по себе не thread-safe и проблема не исчезнет. Сейчас из дому почему-то не могу получить доступа к CVS, но решение проблемы есть. Оставил запись в багтреккере. В понедельник постараюсь заняться ней...
-
К стати, проверка currIP > 0 тоже не нужна. currIP - это PROPERTY, проинстанцированный для типа uint32_t, который не может принимать отрицательных значений.
-
find/grep/wc показал около 11 вхождений inet_ntoa (в основном - отладочный вывод) и аж 67 inet_ntostr - обёртки над inet_ntoa. К стати, это так же может быть причиной падений, обсуждаемых тут:http://local.com.ua/forum/index.php?showtopic=12719
-
Откуда вобще возникает эта ошибка. Дело в том, что функция inet_ntoa ни разу не thread-safe. Она использует статически распределенный буфер для хранения результатов своей работы. Одновременный ее вызов приводит к неопределенному поведению.