-
Incident report
-
Resolution: Fixed
-
Major
-
1.8.3
-
None
-
CentOS 5.5 32bit
Hello,
Code for active/passive proxy data exchange uses zbx_tcp_recv, which is alias to zbx_tcp_recv_ext(s, data, 0, 0) . Zero timeout is bad and produces problems(http://www.zabbix.com/forum/showthread.php?t=19238 for example). No alarm() is used, like it used in trapper.
I got following backtrace on zabbix poller process when proxy was Last seen (age) more than 1 hour.
Core was generated by `zabbix_server_pgsql'.
#0 0x0068e402 in __kernel_vsyscall ()
(gdb) bt
#0 0x0068e402 in __kernel_vsyscall ()
#1 0x00584b23 in __read_nocancel () from /lib/libc.so.6
#2 0x0808f86f in zbx_tcp_recv_ext ()
#3 0x08071951 in get_data_from_proxy ()
#4 0x08071e8e in main_proxypoller_loop ()
#5 0x08056535 in MAIN_ZABBIX_ENTRY ()
#6 0x0808543e in daemon_start ()
#7 0x08056041 in main ()
And process sits at this point till killed
Quick look into code of zabbix_proxy showed the same problem - zbx_tcp_recv/zbx_tcp_send is used without alarm()
Thanks,
Alex