https://bugzilla.balabit.com/show_bug.cgi?id=128 Summary: template() broken in latest 3.3 git Product: syslog-ng Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: unspecified Component: syslog-ng AssignedTo: bazsi@balabit.hu ReportedBy: algernon@balabit.hu Type of the Report: --- Estimated Hours: 0.0 Hi! While updating my 3.3 installation from an ancient version to latest git head, I noticed that template functions stopped working. If I have any kind of template in the config, I get a segmentation fault: ,---- | Program received signal SIGSEGV, Segmentation fault. | log_template_reset_compiled (self=0x0) at templates.c:661 | 661 while (self->compiled_template) | (gdb) bt | #0 log_template_reset_compiled (self=0x0) at templates.c:661 | #1 0x00007ffff7b9f302 in log_template_compile (self=0x0, template=0x63d7e0 "foo: bar", error=0x7fffffffb5d8) at templates.c:788 | #2 0x00007ffff5e96761 in affile_parse (lexer=<value optimized out>, instance=<value optimized out>, arg=<value optimized out>) at affile-grammar.y:592 | #3 0x00007ffff7b9bd72 in cfg_parser_parse (self=0x7ffff609ce30, cfg=<value optimized out>, yylloc=<value optimized out>, arg=<value optimized out>) at cfg-parser.h:83 | #4 plugin_parse_config (self=0x7ffff609ce30, cfg=<value optimized out>, yylloc=<value optimized out>, arg=<value optimized out>) at plugin.c:124 | #5 0x00007ffff7ba89f7 in main_parse (lexer=<value optimized out>, dummy=<value optimized out>, arg=<value optimized out>) at cfg-grammar.y:592 | #6 0x00007ffff7b7ee93 in cfg_parser_parse (self=0x611720, lexer=0x6188a0, parser=0x7ffff7dd92a0, result=<value optimized out>, arg=<value optimized out>) at cfg-parser.h:83 | #7 cfg_run_parser (self=0x611720, lexer=0x6188a0, parser=0x7ffff7dd92a0, result=<value optimized out>, arg=<value optimized out>) at cfg.c:370 | #8 0x00007ffff7b7efa6 in cfg_read_config (self=0x611720, fname=0x7ffff7bb7068 "/home/algernon/tmp/sng/install/3.3/etc/syslog-ng.conf", syntax_only=<value optimized out>, preprocess_into=0x0) at cfg.c:392 | #9 0x00007ffff7b970c1 in main_loop_init () at mainloop.c:611 | #10 0x0000000000401865 in main (argc=1, argv=0x7fffffffdc78) at main.c:242 | (gdb) `---- The config that triggers this is as follows: ,---- | @version: 3.3 | @include "scl.conf" | | source s_local { internal(); }; | destination d_local { file("/tmp/template-test" template("foo: bar")); }; | log { source(s_local); destination(d_local); }; `---- After bisecting the problem, I ended up with the following commit: ,---- | 2443b07b90c822414a628aae6a9ca513357b52fc is the first bad commit | commit 2443b07b90c822414a628aae6a9ca513357b52fc | Author: Balazs Scheidler <bazsi@balabit.hu> | Date: Sat Jun 11 14:09:01 2011 +0200 | | template: make template compilation thread safe | | Instead of doing template compilation on-demand, require the application | code to do it explicitly, at initialization, in order to avoid having to | acquire a lock during runtime. | | This patch contains an incompatible API change, and requires updating | all call-sites. | | The change makes it also possible to change template string of a constructed | LogTemplate class multiple times with a call to log_template_compile(). | | Signed-off-by: Balazs Scheidler <bazsi@balabit.hu> | | :040000 040000 a40fc910d215dac2184aa02ae1498c6748e3e64a dea1d2a7fc02d1d0ec8e095f2f62499ce42b895a M lib | :040000 040000 1641cf3152897406874716d4f090b5cc795292ab f66d2e5c482c3ff91b9d4219812766d66067c7a1 M modules | :040000 040000 2c2a37fd3a4f9c5bddc81813605c20ece033ce2f dff570d331b8e7ada6c1202761066878b9bb3910 M tests `---- I'm not quite sure why this happens yet, I'll keep digging. I'll post a patch if and when I figure out what exactly broke. Meanwhile, this bug report will serve as a reminder for me to keep looking. -- Configure bugmail: https://bugzilla.balabit.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching all bug changes.