-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error in my_thread_global_end() : 1 threads didn't exitというエラーが発生 #3
Comments
@cs-sonar さん 報告ありがとうございます。ざっと見てみました。
622 /* {{{ PHP_RSHUTDOWN_FUNCTION
623 */
624 PHP_RSHUTDOWN_FUNCTION(mysql)
625 {
626 #if !defined(MYSQL_USE_MYSQLND) && defined(ZTS) && MYSQL_VERSION_ID >= 40000
627 mysql_thread_end();
628 #endif
629 しかし、この そこで、本サーバに下記コマンドでmysqlのライブラリをインストールし、 yum install --enablerepo=remi mysql-devel mod_process_security.cの 302 static void * APR_THREAD_FUNC process_security_thread_handler(apr_thread_t *thread, void *data)
303 {
304 request_rec *r = (request_rec *) data;
305 int result;
306
307 thread_on = 1;
308
309 if (process_security_set_cap(r) < 0) {
310 mysql_thread_end();
311 apr_thread_exit(thread, HTTP_INTERNAL_SERVER_ERROR);
312 }
313
314 result = ap_run_handler(r);
315
316 if (result == DECLINED)
317 result = HTTP_INTERNAL_SERVER_ERROR;
318
319 mysql_thread_end(); //ここに追記
320 apr_thread_exit(thread, result);
321
322 return NULL;
323 } そして、下記のようにモジュールをビルドし、 apxs -i -c -L /usr/lib64/mysql/ -lcap -lmysqlclient mod_process_security.c Apacheを再起動すると、該当のエラーが出なくなりました。 mysqlを使っていないようなアクセス、例えば、index.php等にもアクセスして abコマンドで同時接続数100、総接続数100000の負荷をindex.phpにかけてみま
本来は、phpのmysqlを使っている場合のみ、mod_process_security上で 他にこの問題を解決する良いアイデアはないだろうか... |
いち利用者としての報告に対応して下さり、ありがとうございます。 少し難しくて理解できていない部分があるかもしれませんが、頂いた返信内容を元に僕の環境でも設定してみましたが、エラーは出なくなりました。 |
@cs-sonar さん この記述の通り、サーバ停止時にログが出力されだす、という認識でよいですか?MySQLにアクセスするようなPHPスクリプトを実行した時ではなく。 |
言葉足らずですいません。 MySQLにアクセスするようなPHPスクリプトを実行した時にエラーが出力されます。 |
@cs-sonar さん そうでしたか、ではMySQLにアクセス後にmysql_thread_endが実行されていそうですね。いずれにせよ、process_security上でthread_endして問題なさそうならマージしようと思います。 |
Hi, Could you be so nice and describe the source of it in English? UPD: It seems I managed to fix this issue to myself, thanks! UPD2: Nope, I had'nt. I've tried to add mysql_thread_end(); just before execution of apr_thread_exit(): diff --git a/mod_process_security.c b/mod_process_security.c
index b91d6e4..815de5c 100644
--- a/mod_process_security.c
+++ b/mod_process_security.c
@@ -46,6 +46,7 @@
#include <sys/prctl.h>
#include <sys/capability.h>
#include <limits.h>
+#include <mysql/mysql.h>
#define MODULE_NAME "mod_process_security"
#define MODULE_VERSION "1.1.4"
@@ -428,13 +429,17 @@ static void *APR_THREAD_FUNC process_security_thread_handler(apr_thread_t *threa
thread_on = 1;
- if (process_security_set_cap(r) < 0)
+ if (process_security_set_cap(r) < 0) {
+ mysql_thread_end();
apr_thread_exit(thread, HTTP_INTERNAL_SERVER_ERROR);
+ }
if (conf->keep_open_enable == ON) {
fd = open(r->filename, O_RDONLY);
- if (fd == -1)
+ if (fd == -1) {
+ mysql_thread_end();
apr_thread_exit(thread, HTTP_INTERNAL_SERVER_ERROR);
+ }
}
result = ap_run_handler(r);
@@ -446,6 +451,7 @@ static void *APR_THREAD_FUNC process_security_thread_handler(apr_thread_t *threa
if (result == DECLINED)
result = HTTP_INTERNAL_SERVER_ERROR;
+ mysql_thread_end();
apr_thread_exit(thread, result);
return NULL; It seems to be working for Apache instances with low load (tried on the Apache with MaxRequestPerChild 10 and test it with ab).
Any tips will be much appreciated. |
@phsm Thank you for your reports. This issue is the same which you have. So, I also think mod_process_security run |
@matsumoto-r but how can I possibly run Also, could you explain how it happens? I thought it is a mod_php's task to finish its mysqlclient threads gracefully, not mod_process_security's.. |
@phsm
So, you should build your mysql client library for not calling It's a specification of mod_process_security, not a bug. |
mod_process_securityインストール後、Apacheのエラーログに
というエラーが表示されるようになりました。
詳細を確認していた所、
どうやらApache経由でPHP->MySQLと接続したページを表示すると
このエラーが出るようです。
また、特にサービスが停止しているという状況はありません。
エラー内容からMySQLで出ているエラーのようですので
MySQLやPHP側のバグの可能性もありますが、
mod_process_securityインストール後に発生した為、
バグとして報告させて頂きます。
以下の環境にて発生致しました。
また、以下の環境では発生しておりません。
宜しくお願い致します。
The text was updated successfully, but these errors were encountered: