<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
Yes, you are absolutely right. I can see the infinite loop (with brk() call inside) from the tracing file.&nbsp; Thank you so much for your great help which saved me a lot of time. I was thinking something wrong when I built glib :)<br><br>&gt; To: syslog-ng@lists.balabit.hu<br>&gt; Date: Tue, 15 Dec 2009 18:04:24 +0100<br>&gt; Subject: Re: [syslog-ng] syslog-ng OSE 3.0.4 coredumps when use "internal()" in s_local<br>&gt; <br>&gt; On Fri, 2009-12-11 at 18:21 +0000, nova club wrote:<br>&gt; &gt; Thank you so much for your attention. I tried 3.0.5 and it has same<br>&gt; &gt; problem. Please see the attached tarball consisting of a conf file and<br>&gt; &gt; static-linked syslog-ng binary.<br>&gt; &gt; <br>&gt; &gt; The platform I am using is  "6.4-RELEASE-p6 FreeBSD 6.4-RELEASE-p6<br>&gt; &gt; i386". The command line is like "syslog-ng -f &lt;conf&gt; -d -F". And for<br>&gt; &gt; now, I have not found any special or abnormal resource "limit" setup<br>&gt; &gt; on that box. <br>&gt; &gt; <br>&gt; &gt; Another interesting thing is no coredumps if I use "-e" option too.<br>&gt; &gt; <br>&gt; &gt; The conf file actually is a copy of<br>&gt; &gt; "contrib/freebsd-packaging/syslog-ng.conf.example", I just added a new<br>&gt; &gt; log path for a program called "hecxd".<br>&gt; &gt; <br>&gt; &gt; Thanks a lot again.<br>&gt; <br>&gt; I don't have any more time, but the problem seems to be caused by the<br>&gt; fact that --debug messages are enabled.<br>&gt; <br>&gt; filtering generates a 'debug' message, which in turn is processed by the<br>&gt; same filter generating another filter and so on.<br>&gt; <br>&gt; So effectively syslog-ng is busy processing its own message. And these<br>&gt; messages are collected in memory (possibly in a destination queue), thus<br>&gt; syslog-ng is busy allocating memory too.<br>&gt; <br>&gt; At the end of the day, the memory runs out, causing an abort, which will<br>&gt; cause a segfault.<br>&gt; <br>&gt; There's explicit processing in syslog-ng to stop such message loops<br>&gt; caused by internal(), but this is clearly not triggering this case.<br>&gt; <br>&gt; Disabling --debug messages should resolve your problem though.<br>&gt; <br>&gt; &gt; <br>&gt; &gt; &gt; From: bazsi@balabit.hu<br>&gt; &gt; &gt; To: syslog-ng@lists.balabit.hu<br>&gt; &gt; &gt; Date: Fri, 11 Dec 2009 07:52:02 +0100<br>&gt; &gt; &gt; Subject: Re: [syslog-ng] syslog-ng OSE 3.0.4 coredumps when use<br>&gt; &gt; "internal()" in s_local<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; On Wed, 2009-12-09 at 18:04 +0000, nova club wrote:<br>&gt; &gt; &gt; &gt; Hi there,<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; I am a new user of syslog-ng. Thanks for your time and attention<br>&gt; &gt; in<br>&gt; &gt; &gt; &gt; advance.<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; The problem is syslog-ng coredumps when use "internal()" in<br>&gt; &gt; "source",<br>&gt; &gt; &gt; &gt; however it will work fine without "internal()". The conf file is<br>&gt; &gt; like:<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; <br>&gt; &gt; &gt; hmm... g_malloc() never fails, it aborts() instead after logging the<br>&gt; &gt; &gt; failure using assert.<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; This assert is then caught by syslog-ng, to be put in the internal()<br>&gt; &gt; &gt; message source , but then again allocation fails, thus the segfault.<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; Are you sure that syslog-ng is not severely constrained by ulimit or<br>&gt; &gt; &gt; something?<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; Generally if memory allocation fails, syslog-ng aborts.<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; Ah, as I see you said the core file is large, this seems to be some<br>&gt; &gt; kind<br>&gt; &gt; &gt; of memory leak, or overuse of memory, and that's the root reason of<br>&gt; &gt; the<br>&gt; &gt; &gt; crash.<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; Can you send me your complete configuration file? Maybe we could<br>&gt; &gt; &gt; reproduce the problem. Do you happen to have large log_fifo_size()<br>&gt; &gt; &gt; configured to one of your destinations?<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; ===&gt;BEGIN<br>&gt; &gt; &gt; &gt; @version:3.0<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; options { dir_perm(0755); perm(0644);<br>&gt; &gt; &gt; &gt; chain_hostnames(no);<br>&gt; &gt; &gt; &gt; keep_hostname(yes);<br>&gt; &gt; &gt; &gt; };<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; # Default local source.<br>&gt; &gt; &gt; &gt; source local {<br>&gt; &gt; &gt; &gt; unix-dgram("/var/run/log");<br>&gt; &gt; &gt; &gt; unix-dgram("/var/run/logpriv" perm(0600));<br>&gt; &gt; &gt; &gt; internal();<br>&gt; &gt; &gt; &gt; file("/dev/klog");<br>&gt; &gt; &gt; &gt; };<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; ...<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; filter f_hecxd { program("hecxd"); };<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; ...<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; log { source(local); filter(f_hecxd); destination(d_hecxd); };<br>&gt; &gt; &gt; &gt; ==&gt;END<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; The options used for building syslog-ng is: <br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; CFLAGS='-Wl,-Bdynamic -liconv -Wl,-Bstatic'<br>&gt; &gt; --enable-static-linking<br>&gt; &gt; &gt; &gt; \<br>&gt; &gt; &gt; &gt; --enable-debug \<br>&gt; &gt; &gt; &gt; --enable-ssl --enable-ipv6=no --enable-tcp-wrapper=no \<br>&gt; &gt; &gt; &gt; --with-pidfile-dir="/var/run/"<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; The platform is: FREEBSD 6.4-RELEASE-p6 i386<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; I got a very big core dump file (&gt;500M), by backtracing that file,<br>&gt; &gt; I<br>&gt; &gt; &gt; &gt; can see the problem is "g_malloc0" for some reason failed to<br>&gt; &gt; allocate<br>&gt; &gt; &gt; &gt; memory, while syslog-ng did not check the return value and tried<br>&gt; &gt; to<br>&gt; &gt; &gt; &gt; use the "0x0" pointer in a "strlen()" call later. Here is a part<br>&gt; &gt; of<br>&gt; &gt; &gt; &gt; trace information:<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; #0 0x080a2d8d in strlen ()<br>&gt; &gt; &gt; &gt; No symbol table info available.<br>&gt; &gt; &gt; &gt; #1 0x0804e7fe in log_msg_new_internal (prio=43, msg=0x0, flags=6)<br>&gt; &gt; at<br>&gt; &gt; &gt; &gt; logmsg.c:1971<br>&gt; &gt; &gt; &gt; buf = (gchar *) 0x0<br>&gt; &gt; &gt; &gt; self = (LogMessage *) 0x8159000<br>&gt; &gt; &gt; &gt; #2 0x080492b1 in msg_send_internal_message (prio=43, msg=0x0) at<br>&gt; &gt; &gt; &gt; messages.c:128<br>&gt; &gt; &gt; &gt; context = (MsgContext *) 0x81893a0<br>&gt; &gt; &gt; &gt; m = (LogMessage *) 0x7<br>&gt; &gt; &gt; &gt; #3 0x0804954c in msg_log_func (log_domain=0x81186ea "GLib",<br>&gt; &gt; &gt; &gt; log_flags=6, msg=0x0, user_data=0x0) at messages.c:187<br>&gt; &gt; &gt; &gt; pri = 43<br>&gt; &gt; &gt; &gt; #4 0x08084906 in IA__g_logv (log_domain=0x81186ea "GLib",<br>&gt; &gt; &gt; &gt; log_level=G_LOG_LEVEL_ERROR, format=0x811cbac "%s: failed to<br>&gt; &gt; allocate<br>&gt; &gt; &gt; &gt; %u bytes",<br>&gt; &gt; &gt; &gt; args1=0xbfbfe6cc "3�\021\bl") at gmessages.c:519<br>&gt; &gt; &gt; &gt; msg = (gchar *) 0x0<br>&gt; &gt; &gt; &gt; was_fatal = 0<br>&gt; &gt; &gt; &gt; was_recursion = 0<br>&gt; &gt; &gt; &gt; i = 2<br>&gt; &gt; &gt; &gt; #5 0x08084ae4 in IA__g_log (log_domain=0x81186ea "GLib",<br>&gt; &gt; &gt; &gt; log_level=G_LOG_LEVEL_ERROR, format=0x811cbac "%s: failed to<br>&gt; &gt; allocate<br>&gt; &gt; &gt; &gt; %u bytes")<br>&gt; &gt; &gt; &gt; at gmessages.c:569<br>&gt; &gt; &gt; &gt; No locals.<br>&gt; &gt; &gt; &gt; #6 0x08084239 in IA__g_malloc0 (n_bytes=108) at gmem.c:155<br>&gt; &gt; &gt; &gt; mem = 0x0<br>&gt; &gt; &gt; &gt; #7 0x0804e5ef in log_msg_new (<br>&gt; &gt; &gt; &gt; msg=0x8a82180 "&lt;47&gt; syslog-ng[3277]: Filter node evaluation<br>&gt; &gt; &gt; &gt; result; filter_result='not-match', filter_type='level'\n",<br>&gt; &gt; length=100,<br>&gt; &gt; &gt; &gt; saddr=0x0, flags=6, bad_hostname=0x0, assume_timezone=-1,<br>&gt; &gt; &gt; &gt; default_pri=47) at logmsg.c:1873<br>&gt; &gt; &gt; &gt; self = (LogMessage *) 0x810ba1b<br>&gt; &gt; &gt; &gt; #8 0x0804e80a in log_msg_new_internal (prio=47,<br>&gt; &gt; &gt; &gt; msg=0x817f500 "Filter node evaluation result;<br>&gt; &gt; &gt; &gt; filter_result='not-match', filter_type='level'", flags=6) at<br>&gt; &gt; &gt; &gt; logmsg.c:1971<br>&gt; &gt; &gt; &gt; buf = (gchar *) 0x8a82180 "&lt;47&gt; syslog-ng[3277]: Filter node<br>&gt; &gt; &gt; &gt; evaluation result; filter_result='not-match',<br>&gt; &gt; filter_type='level'\n"<br>&gt; &gt; &gt; &gt; self = (LogMessage *) 0x8159000<br>&gt; &gt; &gt; &gt; #9 0x080492b1 in msg_send_internal_message (prio=47,<br>&gt; &gt; &gt; &gt; msg=0x817f500 "Filter node evaluation result;<br>&gt; &gt; &gt; &gt; filter_result='not-match', filter_type='level'") at messages.c:128<br>&gt; &gt; &gt; &gt; context = (MsgContext *) 0x81893a0<br>&gt; &gt; &gt; &gt; m = (LogMessage *) 0x8182030<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; If you need the completed coredump file, just let me know and tell<br>&gt; &gt; me<br>&gt; &gt; &gt; &gt; where to put it :)<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; Any help is much appreciated.<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; Thanks a lot.<br>&gt; &gt; &gt; &gt; Shen<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; &gt;<br>&gt; &gt; ______________________________________________________________________<br>&gt; &gt; &gt; &gt; Windows Live: Make it easier for your friends to see what you’re<br>&gt; &gt; up to<br>&gt; &gt; &gt; &gt; on Facebook.<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; ______________________________________________________________________________<br>&gt; &gt; &gt; &gt; Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng<br>&gt; &gt; &gt; &gt; Documentation:<br>&gt; &gt; http://www.balabit.com/support/documentation/?product=syslog-ng<br>&gt; &gt; &gt; &gt; FAQ: http://www.campin.net/syslog-ng/faq.html<br>&gt; &gt; &gt; &gt; <br>&gt; &gt; &gt; <br>&gt; &gt; &gt; <br>&gt; &gt; &gt; -- <br>&gt; &gt; &gt; Bazsi<br>&gt; &gt; &gt; <br>&gt; &gt; &gt; <br>&gt; &gt; &gt;<br>&gt; &gt; ______________________________________________________________________________<br>&gt; &gt; &gt; Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng<br>&gt; &gt; &gt; Documentation:<br>&gt; &gt; http://www.balabit.com/support/documentation/?product=syslog-ng<br>&gt; &gt; &gt; FAQ: http://www.campin.net/syslog-ng/faq.html<br>&gt; &gt; &gt; <br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt; ______________________________________________________________________<br>&gt; &gt; Get a great deal on Windows 7 and see how it works the way you want.<br>&gt; &gt; Check out the offers on Windows 7now.<br>&gt; &gt; ______________________________________________________________________________<br>&gt; &gt; Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng<br>&gt; &gt; Documentation: http://www.balabit.com/support/documentation/?product=syslog-ng<br>&gt; &gt; FAQ: http://www.campin.net/syslog-ng/faq.html<br>&gt; &gt; <br>&gt; <br>&gt; <br>&gt; -- <br>&gt; Bazsi<br>&gt; <br>&gt; ______________________________________________________________________________<br>&gt; Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng<br>&gt; Documentation: http://www.balabit.com/support/documentation/?product=syslog-ng<br>&gt; FAQ: http://www.campin.net/syslog-ng/faq.html<br>&gt; <br>                                               <br /><hr />Get a great deal on Windows 7 and see how it works the way you want. <a href='http://go.microsoft.com/?linkid=9691813' target='_new'>See the Windows 7 offers now.</a></body>
</html>