-
Notifications
You must be signed in to change notification settings - Fork 340
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
main v1.7.1 [unitd --control 127.0.0.1:8300]: [alert] 28169#28169 process 28858 exited on signal 11 #221
Comments
Unfortunately, these messages have no information about the problem. Could you provide your configuration, describe your setup and conditions when you experienced this crash? Also, enabling debug logging will help: http://unit.nginx.org/troubleshooting/#debug-log |
#unitd --control 127.0.0.1:8300
} Feb 12 16:31:22 srvdb004 unit: router: [alert] 29261#29265 *9 writev(-1, 2) failed (9: Bad file descriptor) 2019/02/12 16:31:22 [info] 31508#31508 OpenSSL 1.0.1e-fips 11 Feb 2013, 1000105f Started after update Feb 12 13:45:29 srvdb004 yum[27540]: Updated: unit-1.7.1-1.el6.ngx.x86_64 before there was a problem the configuration did not change month and worked |
debug |
@maksitop Thank you very much for the report. We are working on the fix. |
@maksitop Could you show |
@maksitop please try the following patch: diff -r 6d72c218a055 -r db5b1fa66046 src/nxt_timer.c
--- a/src/nxt_timer.c Mon Feb 11 15:42:16 2019 +0300
+++ b/src/nxt_timer.c Tue Feb 12 22:12:09 2019 +0300
@@ -159,9 +159,9 @@ nxt_timer_change(nxt_event_engine_t *eng
static void
nxt_timer_changes_commit(nxt_event_engine_t *engine)
{
- nxt_timer_t *timer, **add, **add_end;
+ nxt_timer_t *timer;
nxt_timers_t *timers;
- nxt_timer_change_t *ch, *end;
+ nxt_timer_change_t *ch, *end, *add, *add_end;
timers = &engine->timers;
@@ -170,7 +170,7 @@ nxt_timer_changes_commit(nxt_event_engin
ch = timers->changes;
end = ch + timers->nchanges;
- add = (nxt_timer_t **) ch;
+ add = ch;
add_end = add;
while (ch < end) {
@@ -185,7 +185,7 @@ nxt_timer_changes_commit(nxt_event_engin
timer->time = ch->time;
- *add_end++ = timer;
+ *add_end++ = *ch;
if (!nxt_timer_is_in_tree(timer)) {
break;
@@ -209,7 +209,7 @@ nxt_timer_changes_commit(nxt_event_engin
}
while (add < add_end) {
- timer = *add;
+ timer = add->timer;
nxt_debug(timer->task, "timer rbtree insert: %M±%d",
timer->time, timer->bias); |
unitd --version Name : unit Relocations: (not relocatable) unit.repo |
@maksitop Thanks. It looks like only CentOS 6 64-bit package is broken. We're working on preparing a new one. Also we've improved our release procedures to avoid this in future. |
CentOS 6 x86_64 updated packages are coming soon, I'll post an update here. |
@maksitop please upgrade to the 1.7.1-2 version which has just been added to our CentOS 6 64-bit repository, and let us know how it goes. |
#yum install unit |
oops |
@maksitop CentOS 6 has perl 5.10 which is not supported by Unit, so we excluded that package. Please remove it and re-run the upgrade. |
#yum remove unit Ok unitd --control 127.0.0.1:83002019/02/15 12:01:06 [info] 13326#13326 unit started /etc/init.d/unit stopStopping unitd: [ OK ] unit.log messages.log |
@maksitop That's ok. Some alerts may appear while shutting down. They are harmless. |
thanks It works. Спасибо! |
Version unit-perl-1.7.1-2.el6.ngx.x86_64 will not be? |
@maksitop Unit supports Perl versions 5.12 or later. Unfortunately, CentOS 6 provides Perl version 5.10, that was released more than 11 years ago. It has multiple incompatibilities with later versions and we cannot give any assurances if it works properly in Unit with Perl applications. The unit-perl module on CentOS 6 has been built by mistake. You can try to build it yourself, but for multiple reasons I suggest to avoid using so old software versions. |
thanks It works. Спасибо! |
In order to reduce number of operations over rb-tree and process them in batches simultaneously, all the timers changes are temporary stored in array. While processing of these changes, the same memory is also used for storing pointers to postpone timers adding. As the same block of memory has been referenced by two different types of pointers (nxt_timer_change_t * and nxt_timer_t **), some compilers may reorder operations with these pointers and produce broken code. See ticket #221 on GitHub for a particular case. Now the same "nxt_timer_change_t" structure is used in both cases. Also, reverted the -fno-strict-aliasing flag, which has been introduced in ef76227ec159 as a workaround for this issue.
Hi!
messages.log
Feb 12 14:05:14 srvdb004 kernel: unitd[28863]: segfault at b8 ip 00007f9a06680c9e sp 00007f9a01bc8b00 error 4 in unitd[7f9a0665d000+49000]
Feb 12 14:05:14 srvdb004 unit: main v1.7.1 [unitd --control 127.0.0.1:8300]: [alert] 28169#28169 process 28858 exited on signal 11
unit.log
2019/02/12 14:05:14.791 [warn] 28859#28859 [unit] failed to send shm to 28858: Broken pipe (32)
2019/02/12 14:05:14.791 [warn] 28859#28859 [unit] port_send(8, 16) failed: Broken pipe (32)
2019/02/12 14:05:14.791 [alert] 28859#28859 [unit] #4: last message send failed: Broken pipe (32)
Help!
The text was updated successfully, but these errors were encountered: