Page MenuHome Accel-ppp

Падение accel-cmd reload без изменения конфига
Open, HighPublicBUG

Description

Падение вызывается на совершенно пустом accel-ppp без нагрузки такой командой:

while sleep 1; do accel-cmd reload; sleep 1; accel-cmd show sessions; done;
Конфиг при этом не изменяется, подключений к pppoe нет.

Конфиг:

[modules]
log_syslog
pppoe
auth_mschap_v2
auth_mschap_v1
auth_chap_md5
radius

[core]
thread-count=4

[common]
single-session=replace
single-session-ignore-case=1
max-starting=100

[ppp]
verbose=1
min-mtu=1152
mtu=1420
mru=1420
mppe=deny
ipv4=require
ipv6=deny
lcp-echo-interval=20
lcp-echo-failure=3
lcp-echo-timeout=120
unit-cache=1

[auth]

[pppoe]
verbose=1
called-sid=mac
interface=eth0

[dns]
dns1=198.18.255.254

[radius]
nas-identifier=MEGA
gw-ip-address=198.18.255.254
server=127.0.0.1,passwradius,auth-port=1812,acct-port=1813,req-limit=50,fail-timeout=0,max-fail=10,weight=1
verbose=1

[log]
syslog=accel-pppd,daemon
copy=1
level=5

[cli]
verbose=2
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001
sessions-columns=type,ifname,username,ip,state,uptime-raw,calling-sid,called-sid,rx-bytes,tx-bytes

В обычном случае происходит такое:

Starting program: /usr/sbin/accel-pppd -c /etc/accel-ppp/accel-ppp.conf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
[New Thread 0xb7ad9b40 (LWP 24563)]
[New Thread 0xb72d8b40 (LWP 24566)]
[New Thread 0xb6ad7b40 (LWP 24567)]
[New Thread 0xb60ffb40 (LWP 24569)]
[New Thread 0xb58feb40 (LWP 24570)]
[New Thread 0xb50fdb40 (LWP 24572)]
[New Thread 0xb48fcb40 (LWP 24573)]
conf_file:/etc/accel-ppp/accel-ppp.conf:93: no section opened
memory corruption:
malloc(10) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/conf_file.c:117
free at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/conf_file.c:193
*** Error in `/usr/sbin/accel-pppd': corrupted double-linked list: 0xb61018c8 ***

Thread 3 "accel-pppd" received signal SIGABRT, Aborted.
[Switching to Thread 0xb72d8b40 (LWP 24566)]
0xb7fdc428 in __kernel_vsyscall ()
(gdb) bt full
No symbol table info available.
No symbol table info available.
No symbol table info available.
    at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/memdebug.c:90
        mem = 0xb61018d0
        r = 0
        ctx = {fname = 0xb7fda1c4 <sections> "D\036ПЁт!\020╤╓R\005─\\m\005──", file = 0xfa8c7f2b, line = 108205909, items = 0x0}
        sect = 0x8002f1bf <log_switch>
        r = -2147097804
        sections_bak = {next = 0xb3d01554, prev = 0xb3d016ec}
        t = 0xb7ff2750
        r = 4
        set = {__val = {516, 0 <repeats 31 times>}}
        sig = 10
        need_free = 0
        stack = 0x0
No symbol table info available.
No symbol table info available.

Это уже пропатчено тут: https://github.com/anphsw/accel-ppp/commit/a0c08ce019cf88278f882d823f876c6edc2d5218

После патча память не повреждается, а баг заходит несколько дальше, мои предположения такие: т.к. конфигурационное пространство одно и то же, но в него пытаются писать два независимых процесса, то могут происходить неприятные вещи с повреждением конфигурации (какие-то фатальные, какие-то нет)
Не фатальные выглядят так:

[New Thread 0xb7ad8b40 (LWP 22088)]
[New Thread 0xb72d7b40 (LWP 22091)]
[New Thread 0xb6ad6b40 (LWP 22092)]
[New Thread 0xb60ffb40 (LWP 22093)]
[New Thread 0xb58feb40 (LWP 22094)]
[New Thread 0xb50fdb40 (LWP 22095)]
[New Thread 0xb48fcb40 (LWP 22096)]
conf_file:/etc/accel-ppp/accel-ppp.conf:59: no section opened
conf_file:/etc/accel-ppp/accel-ppp.conf:7: no section opened

Заметьте, что ошибки в разных местах вылетают, хотя конфиг при этом никто не трогает!
Если конфигу с этим ошибками все-таки удается пролезть через парсер, то возникают злучайные ошибки в тех модулях, чьи секции конфига побились:

conf_file:/etc/accel-ppp/accel-ppp.conf:7: no section opened

Thread 6 "accel-pppd" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb58feb40 (LWP 22094)]
0xb7ae6e25 in load_config () at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/radius/serv.c:903
903     /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/radius/serv.c: Нет такого файла или каталога.
(gdb) bt full
#0  0xb7ae6e25 in load_config () at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/radius/serv.c:903
        sect = 0x0
        opt = 0xb7aecfdf
        s = 0xb7af1224 <serv_list>
        r = 0x0
        pos = 0x3db
        n = 0x80053f78
        opt1 = 0x0
#1  0xb7fd6408 in triton_event_fire (ev_id=11, arg=0x0) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/event.c:103
        ev = 0x80053f78
        h = 0x8005e2e8
#2  0x8001f43c in conf_reload_notify (r=0) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/cli/std_cmd.c:319
No locals.
#3  0xb7fd1b7b in __config_reload (notify=0x8001f3f8 <conf_reload_notify>) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/triton.c:73
        t = 0xb7fda190 <threads>
        r = 0
#4  0xb7fd2097 in triton_thread (thread=0x8005d13c) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/triton.c:159
        set = {__val = {516, 0 <repeats 31 times>}}
        sig = 10
        need_free = 0
        stack = 0x0
#5  0xb7fae41b in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#6  0xb7c5092e in clone () from /lib/libc.so.6
No symbol table info available.
(gdb) run
Starting program: /usr/sbin/accel-pppd -c /etc/accel-ppp/accel-ppp.conf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
[New Thread 0xb7ad8b40 (LWP 10263)]
[New Thread 0xb72d7b40 (LWP 10266)]
[New Thread 0xb6ad6b40 (LWP 10267)]
[New Thread 0xb60ffb40 (LWP 10269)]
[New Thread 0xb58feb40 (LWP 10270)]
[New Thread 0xb50fdb40 (LWP 10271)]
[New Thread 0xb48fcb40 (LWP 10273)]
memory corruption:
free at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/logs/log_syslog.c:171

Thread 6 "accel-pppd" received signal SIGABRT, Aborted.
[Switching to Thread 0xb58feb40 (LWP 10270)]
0xb7fdc428 in __kernel_vsyscall ()
(gdb) bt full
#0  0xb7fdc428 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb7b8b219 in raise () from /lib/libc.so.6
No symbol table info available.
#2  0xb7b8c9cd in abort () from /lib/libc.so.6
No symbol table info available.
#3  0x80005096 in md_free (ptr=0xb3d02fd4, fname=0xb7b1c6a4 "/var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/logs/log_syslog.c", line=171)
    at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/memdebug.c:84
        mem = 0xb3d02fb0
#4  0xb7b1c4b9 in load_config () at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/logs/log_syslog.c:171
        opt = 0x0
        facility = 24
#5  0xb7fd6408 in triton_event_fire (ev_id=11, arg=0x0) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/event.c:103
        ev = 0x80053f78
        h = 0x80054180
#6  0x8001f43c in conf_reload_notify (r=0) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/cli/std_cmd.c:319
No locals.
#7  0xb7fd1b7b in __config_reload (notify=0x8001f3f8 <conf_reload_notify>) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/triton.c:73
        t = 0xb7fda190 <threads>
        r = 0
#8  0xb7fd2097 in triton_thread (thread=0x8005d264) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/triton.c:159
        set = {__val = {516, 0 <repeats 31 times>}}
        sig = 10
        need_free = 0
        stack = 0x0
#9  0xb7fae41b in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#10 0xb7c5092e in clone () from /lib/libc.so.6
No symbol table info available.

Следующая итерация такая: отключить возможность одновременно парсить конфиг двумя разными процессами:

diff --git a/accel-pppd/triton/conf_file.c b/accel-pppd/triton/conf_file.c
index e1d9650..fa4a56a 100644
--- a/accel-pppd/triton/conf_file.c
+++ b/accel-pppd/triton/conf_file.c
@@ -33,6 +33,8 @@ static int sect_add_item(struct conf_ctx *ctx, const char *name, char *val, char
 static struct conf_option_t *find_item(struct conf_sect_t *, const char *name);
 static int load_file(struct conf_ctx *ctx);

+int conf_loading = 0;
+
 static int __conf_load(struct conf_ctx *ctx, const char *fname)
 {
        struct conf_ctx ctx1;
@@ -180,6 +182,12 @@ int conf_load(const char *fname)
        int r;
        struct conf_ctx ctx;

+       if (conf_loading) {
+           fprintf(stderr, "conf_file: loading already in progress\n");
+           return -1;
+       }
+       conf_loading = 1;
+
        if (fname) {
                if (conf_fname)
                        _free(conf_fname);
@@ -190,6 +198,8 @@ int conf_load(const char *fname)
        ctx.items = NULL;
        r = __conf_load(&ctx, fname);

+       conf_loading = 0;
+
        return r;
 }

@@ -213,6 +223,12 @@ int conf_reload(const char *fname)
 {
        struct sect_t *sect;
        int r;
+
+       if (conf_loading) {
+           fprintf(stderr, "conf_file: reloading already in progress\n");
+           return -1;
+       }
+
        LIST_HEAD(sections_bak);

        list_splice_init(&sections, &sections_bak);

После этого приходит постоянство: при попытке парсить конфиг одновременно два раза мы вылетаем стабильно в одном и том же месте:

conf_file: reloading already in progress

Thread 4 "accel-pppd" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb6ad5b40 (LWP 18176)]
0xb7fd19a1 in __list_del (prev=0x0, next=0x0) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/list.h:85
85      /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/list.h: Нет такого файла или каталога.
(gdb) bt full
#0  0xb7fd19a1 in __list_del (prev=0x0, next=0x0) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/list.h:85
No locals.
#1  0xb7fd19fa in list_del (entry=0x80058e1c) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/list.h:96
No locals.
#2  0xb7fd1fe3 in triton_thread (thread=0x8005e454) at /var/tmp/portage/net-dialup/accel-ppp-9999/work/accel-ppp-9999/accel-pppd/triton/triton.c:145
        set = {__val = {516, 0 <repeats 31 times>}}
        sig = 10
        need_free = 0
        stack = 0x0
#3  0xb7fae41b in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#4  0xb7c5092e in clone () from /lib/libc.so.6
No symbol table info available.

Насколько я понял, последний патч не устраивает xeb'a, так что хотелось бы услышать предложения, как лучше пофиксить такую ситуацию.

Details

Protocol
General
Version
49ef6cf969f662c44f4be2b82b101273c8c6de71

Event Timeline

anphsw triaged this task as High priority.Mar 16 2021, 09:42
anphsw created this task.

Если воспользоваться обнаружением ошибок в тредах, можно обнаружить такое:

==16746== Helgrind, a thread error detector
==16746== Copyright (C) 2007-2017, and GNU GPL'd, by OpenWorks LLP et al.
==16746== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==16746== Command: /tmp/debug/usr/sbin/accel-pppd -c /etc/accel-ppp/accel-ppp.conf
==16746== 
***** started
***** start connecting pppoe
==16746== ---Thread-Announcement------------------------------------------
==16746== 
==16746== Thread #6 was created
==16746==    at 0x4C0D915: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==    by 0x486129D: create_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4862AED: pthread_create@@GLIBC_2.1 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x48633B6: pthread_create@GLIBC_2.0 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x484976D: create_thread (triton.c:320)
==16746==    by 0x484ABC3: triton_run (triton.c:744)
==16746==    by 0x1385E0: main (main.c:407)
==16746== 
==16746== ---Thread-Announcement------------------------------------------
==16746== 
==16746== Thread #7 was created
==16746==    at 0x4C0D915: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==    by 0x486129D: create_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4862AED: pthread_create@@GLIBC_2.1 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x48633B6: pthread_create@GLIBC_2.0 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x484716B: md_run (md.c:48)
==16746==    by 0x484AC55: triton_run (triton.c:757)
==16746==    by 0x1385E0: main (main.c:407)
==16746== 
==16746== ---Thread-Announcement------------------------------------------
==16746== 
==16746== Thread #1 is the program's root thread
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746==  Lock at 0x4851260 was first observed
==16746==    at 0x4830619: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x484A87C: triton_init (triton.c:666)
==16746==    by 0x1384E2: main (main.c:360)
==16746==  Address 0x4851260 is 0 bytes inside data symbol "threads_lock"
==16746== 
==16746== Possible data race during write of size 4 at 0x4D497F8 by thread #6
==16746== Locks held: 1, at address 0x4851260
==16746==    at 0x4849271: triton_thread (triton.c:201)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous read of size 4 by thread #7
==16746== Locks held: none
==16746==    at 0x4847455: md_thread (md.c:98)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x4d497f8 is 56 bytes inside a block of size 156 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x48499D8: triton_context_register (triton.c:364)
==16746==    by 0x5111F08: init_net (disc.c:95)
==16746==    by 0x5112198: pppoe_disc_start (disc.c:149)
==16746==    by 0x510D2DB: __pppoe_server_start (pppoe.c:1528)
==16746==    by 0x510CC67: pppoe_server_start (pppoe.c:1406)
==16746==    by 0x510F0A2: load_interfaces (pppoe.c:2075)
==16746==    by 0x510F225: pppoe_init (pppoe.c:2107)
==16746==    by 0x484A9EA: triton_load_modules (triton.c:704)
==16746==  Block was alloc'd by thread #1
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746== Possible data race during read of size 4 at 0x4D6E2E0 by thread #7
==16746== Locks held: none
==16746==    at 0x484734D: md_thread (md.c:82)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous write of size 4 by thread #6
==16746== Locks held: none
==16746==    at 0x483886B: memset (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x4847588: triton_md_register_handler (md.c:119)
==16746==    by 0x1120CF: establish_ppp (ppp.c:124)
==16746==    by 0x5109650: connect_channel (pppoe.c:463)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==  Address 0x4d6e2e0 is 80 bytes inside a block of size 92 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x4847573: triton_md_register_handler (md.c:118)
==16746==    by 0x1120CF: establish_ppp (ppp.c:124)
==16746==    by 0x5109650: connect_channel (pppoe.c:463)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==  Block was alloc'd by thread #6
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746== Possible data race during read of size 4 at 0x4D6E2C4 by thread #7
==16746== Locks held: none
==16746==    at 0x484735F: md_thread (md.c:84)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous write of size 4 by thread #6
==16746== Locks held: none
==16746==    at 0x4838863: memset (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x4847588: triton_md_register_handler (md.c:119)
==16746==    by 0x1120CF: establish_ppp (ppp.c:124)
==16746==    by 0x5109650: connect_channel (pppoe.c:463)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==  Address 0x4d6e2c4 is 52 bytes inside a block of size 92 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x4847573: triton_md_register_handler (md.c:118)
==16746==    by 0x1120CF: establish_ppp (ppp.c:124)
==16746==    by 0x5109650: connect_channel (pppoe.c:463)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==  Block was alloc'd by thread #6
==16746== 
==16746== ---Thread-Announcement------------------------------------------
==16746== 
==16746== Thread #5 was created
==16746==    at 0x4C0D915: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==    by 0x486129D: create_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4862AED: pthread_create@@GLIBC_2.1 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x48633B6: pthread_create@GLIBC_2.0 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x484976D: create_thread (triton.c:320)
==16746==    by 0x484ABC3: triton_run (triton.c:744)
==16746==    by 0x1385E0: main (main.c:407)
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746==  Lock at 0x4D4AE5C was first observed
==16746==    at 0x4834228: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x513BE14: __add_server (serv.c:555)
==16746==    by 0x513CC3C: add_server (serv.c:862)
==16746==    by 0x513CE6B: load_config (serv.c:906)
==16746==    by 0x513D11C: init (serv.c:955)
==16746==    by 0x484A9EA: triton_load_modules (triton.c:704)
==16746==    by 0x1385B8: main (main.c:402)
==16746==  Address 0x4d4ae5c is 156 bytes inside a block of size 268 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x513CBB7: add_server (serv.c:847)
==16746==    by 0x513CE6B: load_config (serv.c:906)
==16746==    by 0x513D11C: init (serv.c:955)
==16746==    by 0x484A9EA: triton_load_modules (triton.c:704)
==16746==    by 0x1385B8: main (main.c:402)
==16746==  Block was alloc'd by thread #1
==16746== 
==16746== Possible data race during write of size 4 at 0x4D4A518 by thread #5
==16746== Locks held: 1, at address 0x4D4AE5C
==16746==    at 0x1361DC: __list_del (list.h:86)
==16746==    by 0x13622B: list_del (list.h:96)
==16746==    by 0x136D36: _log_free_msg (log.c:276)
==16746==    by 0x1365CF: do_log (log.c:113)
==16746==    by 0x136B2F: log_ppp_debug (log.c:230)
==16746==    by 0x513AD82: rad_server_req_exit (serv.c:259)
==16746==    by 0x5134512: rad_req_read (req.c:423)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746== 
==16746== This conflicts with a previous read of size 4 by thread #6
==16746== Locks held: none
==16746==    at 0x5102D91: unpack_msg (log_syslog.c:42)
==16746==    by 0x5102FE1: do_syslog (log_syslog.c:81)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x4d4a518 is 56 bytes inside a block of size 76 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x1363EB: do_log (log.c:87)
==16746==    by 0x136B2F: log_ppp_debug (log.c:230)
==16746==    by 0x513AD82: rad_server_req_exit (serv.c:259)
==16746==    by 0x5134512: rad_req_read (req.c:423)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==  Block was alloc'd by thread #5
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746==  Lock at 0x4D4AE5C was first observed
==16746==    at 0x4834228: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x513BE14: __add_server (serv.c:555)
==16746==    by 0x513CC3C: add_server (serv.c:862)
==16746==    by 0x513CE6B: load_config (serv.c:906)
==16746==    by 0x513D11C: init (serv.c:955)
==16746==    by 0x484A9EA: triton_load_modules (triton.c:704)
==16746==    by 0x1385B8: main (main.c:402)
==16746==  Address 0x4d4ae5c is 156 bytes inside a block of size 268 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x513CBB7: add_server (serv.c:847)
==16746==    by 0x513CE6B: load_config (serv.c:906)
==16746==    by 0x513D11C: init (serv.c:955)
==16746==    by 0x484A9EA: triton_load_modules (triton.c:704)
==16746==    by 0x1385B8: main (main.c:402)
==16746==  Block was alloc'd by thread #1
==16746== 
==16746== Possible data race during write of size 4 at 0x4D4A24C by thread #5
==16746== Locks held: 1, at address 0x4D4AE5C
==16746==    at 0x136232: list_del (list.h:97)
==16746==    by 0x136D36: _log_free_msg (log.c:276)
==16746==    by 0x1365CF: do_log (log.c:113)
==16746==    by 0x136B2F: log_ppp_debug (log.c:230)
==16746==    by 0x513AD82: rad_server_req_exit (serv.c:259)
==16746==    by 0x5134512: rad_req_read (req.c:423)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous read of size 4 by thread #6
==16746== Locks held: none
==16746==    at 0x5102D99: unpack_msg (log_syslog.c:42)
==16746==    by 0x5102FE1: do_syslog (log_syslog.c:81)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x4d4a24c is 36 bytes inside a block of size 185 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x136FF6: add_msg (log.c:332)
==16746==    by 0x1364C7: do_log (log.c:96)
==16746==    by 0x136B2F: log_ppp_debug (log.c:230)
==16746==    by 0x513AD82: rad_server_req_exit (serv.c:259)
==16746==    by 0x5134512: rad_req_read (req.c:423)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==  Block was alloc'd by thread #5
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746== Possible data race during write of size 4 at 0x4D4A24C by thread #5
==16746== Locks held: none
==16746==    at 0x136232: list_del (list.h:97)
==16746==    by 0x136D36: _log_free_msg (log.c:276)
==16746==    by 0x1365CF: do_log (log.c:113)
==16746==    by 0x136A3D: log_ppp_info1 (log.c:210)
==16746==    by 0x51358DF: rad_packet_print (packet.c:412)
==16746==    by 0x5134563: rad_req_read (req.c:429)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous read of size 4 by thread #6
==16746== Locks held: none
==16746==    at 0x5102D99: unpack_msg (log_syslog.c:42)
==16746==    by 0x5102FE1: do_syslog (log_syslog.c:81)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x4d4a24c is 36 bytes inside a block of size 185 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x136FF6: add_msg (log.c:332)
==16746==    by 0x1364C7: do_log (log.c:96)
==16746==    by 0x136A3D: log_ppp_info1 (log.c:210)
==16746==    by 0x5134543: rad_req_read (req.c:428)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==  Block was alloc'd by thread #5
==16746== 
***** pppoe connected
==16746== ---Thread-Announcement------------------------------------------
==16746== 
==16746== Thread #8 was created
==16746==    at 0x4C0D915: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==    by 0x486129D: create_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4862AED: pthread_create@@GLIBC_2.1 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x48633B6: pthread_create@GLIBC_2.0 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x4847F7E: timer_run (timer.c:57)
==16746==    by 0x484AC5A: triton_run (triton.c:758)
==16746==    by 0x1385E0: main (main.c:407)
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746== Possible data race during read of size 4 at 0x4D73F4C by thread #8
==16746== Locks held: none
==16746==    at 0x484815F: timer_thread (timer.c:91)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous write of size 4 by thread #6
==16746== Locks held: none
==16746==    at 0x4838893: memset (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x4848374: triton_timer_add (timer.c:129)
==16746==    by 0x117B9B: start_echo (ppp_lcp.c:669)
==16746==    by 0x116234: lcp_layer_up (ppp_lcp.c:170)
==16746==    by 0x114A2C: ppp_fsm_recv_conf_req_ack (ppp_fsm.c:232)
==16746==    by 0x1180FA: lcp_recv (ppp_lcp.c:776)
==16746==    by 0x112F65: ppp_chan_read (ppp.c:424)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==  Address 0x4d73f4c is 76 bytes inside a block of size 88 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x484835F: triton_timer_add (timer.c:127)
==16746==    by 0x117B9B: start_echo (ppp_lcp.c:669)
==16746==    by 0x116234: lcp_layer_up (ppp_lcp.c:170)
==16746==    by 0x114A2C: ppp_fsm_recv_conf_req_ack (ppp_fsm.c:232)
==16746==    by 0x1180FA: lcp_recv (ppp_lcp.c:776)
==16746==    by 0x112F65: ppp_chan_read (ppp.c:424)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==  Block was alloc'd by thread #6
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746== Possible data race during read of size 4 at 0x4D73F40 by thread #8
==16746== Locks held: none
==16746==    at 0x4848171: timer_thread (timer.c:93)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous write of size 4 by thread #6
==16746== Locks held: none
==16746==    at 0x483886B: memset (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x4848374: triton_timer_add (timer.c:129)
==16746==    by 0x117B9B: start_echo (ppp_lcp.c:669)
==16746==    by 0x116234: lcp_layer_up (ppp_lcp.c:170)
==16746==    by 0x114A2C: ppp_fsm_recv_conf_req_ack (ppp_fsm.c:232)
==16746==    by 0x1180FA: lcp_recv (ppp_lcp.c:776)
==16746==    by 0x112F65: ppp_chan_read (ppp.c:424)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==  Address 0x4d73f40 is 64 bytes inside a block of size 88 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x484835F: triton_timer_add (timer.c:127)
==16746==    by 0x117B9B: start_echo (ppp_lcp.c:669)
==16746==    by 0x116234: lcp_layer_up (ppp_lcp.c:170)
==16746==    by 0x114A2C: ppp_fsm_recv_conf_req_ack (ppp_fsm.c:232)
==16746==    by 0x1180FA: lcp_recv (ppp_lcp.c:776)
==16746==    by 0x112F65: ppp_chan_read (ppp.c:424)
==16746==    by 0x4849484: ctx_thread (triton.c:252)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==  Block was alloc'd by thread #6
==16746== 
***** accel-cmd show sessions
***** accel-cmd reload
==16746== ---Thread-Announcement------------------------------------------
==16746== 
==16746== Thread #2 was created
==16746==    at 0x4C0D915: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==    by 0x486129D: create_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4862AED: pthread_create@@GLIBC_2.1 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x114227: init (ppp.c:768)
==16746==    by 0x484A9EA: triton_load_modules (triton.c:704)
==16746==    by 0x1385B8: main (main.c:402)
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746==  Lock at 0x14686C was first observed
==16746==    at 0x4831F07: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x112BAD: uc_thread (ppp.c:337)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x14686c is 0 bytes inside data symbol "uc_lock"
==16746== 
==16746== Possible data race during write of size 4 at 0x146B1C by thread #5
==16746== Locks held: none
==16746==    at 0x114139: load_config (ppp.c:749)
==16746==    by 0x484D452: triton_event_fire (event.c:103)
==16746==    by 0x1274EE: conf_reload_notify (std_cmd.c:319)
==16746==    by 0x4848B79: __config_reload (triton.c:73)
==16746==    by 0x4849095: triton_thread (triton.c:159)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous read of size 4 by thread #2
==16746== Locks held: 1, at address 0x14686C
==16746==    at 0x112BB7: uc_thread (ppp.c:338)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x146b1c is 0 bytes inside data symbol "conf_unit_cache"
==16746== 
***** disconnecting pppoe
==16746== ---Thread-Announcement------------------------------------------
==16746== 
==16746== Thread #3 was created
==16746==    at 0x4C0D915: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==    by 0x486129D: create_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4862AED: pthread_create@@GLIBC_2.1 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x48633B6: pthread_create@GLIBC_2.0 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x484976D: create_thread (triton.c:320)
==16746==    by 0x484ABC3: triton_run (triton.c:744)
==16746==    by 0x1385E0: main (main.c:407)
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746==  Lock at 0x4851260 was first observed
==16746==    at 0x4830619: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x484A87C: triton_init (triton.c:666)
==16746==    by 0x1384E2: main (main.c:360)
==16746==  Address 0x4851260 is 0 bytes inside data symbol "threads_lock"
==16746== 
==16746==  Lock at 0x4D4C4A4 was first observed
==16746==    at 0x4830619: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x4849A41: triton_context_register (triton.c:376)
==16746==    by 0x510941B: allocate_channel (pppoe.c:420)
==16746==    by 0x510C2F6: pppoe_recv_PADR (pppoe.c:1219)
==16746==    by 0x510C5B4: pppoe_serv_read (pppoe.c:1268)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x4d4c4a4 is 52 bytes inside a block of size 156 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x48499D8: triton_context_register (triton.c:364)
==16746==    by 0x510941B: allocate_channel (pppoe.c:420)
==16746==    by 0x510C2F6: pppoe_recv_PADR (pppoe.c:1219)
==16746==    by 0x510C5B4: pppoe_serv_read (pppoe.c:1268)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==  Block was alloc'd by thread #6
==16746== 
==16746== Possible data race during write of size 4 at 0x4D4C4A8 by thread #7
==16746== Locks held: 2, at addresses 0x4851260 0x4D4C4A4
==16746==    at 0x48498B8: triton_queue_ctx (triton.c:347)
==16746==    by 0x4847409: md_thread (md.c:91)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous write of size 4 by thread #3
==16746== Locks held: 1, at address 0x4851260
==16746==    at 0x4849271: triton_thread (triton.c:201)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x4d4c4a8 is 56 bytes inside a block of size 156 alloc'd
==16746==    at 0x482BBB9: malloc (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x10CF6E: _md_malloc (memdebug.c:47)
==16746==    by 0x10D096: md_malloc (memdebug.c:68)
==16746==    by 0x484CC89: md_mempool_alloc (mempool.c:201)
==16746==    by 0x48499D8: triton_context_register (triton.c:364)
==16746==    by 0x510941B: allocate_channel (pppoe.c:420)
==16746==    by 0x510C2F6: pppoe_recv_PADR (pppoe.c:1219)
==16746==    by 0x510C5B4: pppoe_serv_read (pppoe.c:1268)
==16746==    by 0x4849544: ctx_thread (triton.c:273)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==  Block was alloc'd by thread #6
==16746== 
***** pppoe disconnected
***** stopping
^C==16746== ----------------------------------------------------------------
==16746== 
==16746== Possible data race during read of size 4 at 0x146970 by thread #1
==16746== Locks held: none
==16746==    at 0x136706: log_info1 (log.c:139)
==16746==    by 0x13880C: main (main.c:448)
==16746== 
==16746== This conflicts with a previous write of size 4 by thread #5
==16746== Locks held: none
==16746==    at 0x13741B: load_config (log.c:497)
==16746==    by 0x484D452: triton_event_fire (event.c:103)
==16746==    by 0x1274EE: conf_reload_notify (std_cmd.c:319)
==16746==    by 0x4848B79: __config_reload (triton.c:73)
==16746==    by 0x4849095: triton_thread (triton.c:159)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==  Address 0x146970 is 0 bytes inside data symbol "log_level"
==16746== 
==16746== ---Thread-Announcement------------------------------------------
==16746== 
==16746== Thread #4 was created
==16746==    at 0x4C0D915: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==    by 0x486129D: create_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4862AED: pthread_create@@GLIBC_2.1 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x48633B6: pthread_create@GLIBC_2.0 (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4833DA0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x484976D: create_thread (triton.c:320)
==16746==    by 0x484ABC3: triton_run (triton.c:744)
==16746==    by 0x1385E0: main (main.c:407)
==16746== 
==16746== ----------------------------------------------------------------
==16746== 
==16746==  Lock at 0x48512A0 was first observed
==16746==    at 0x4830619: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x484A890: triton_init (triton.c:667)
==16746==    by 0x1384E2: main (main.c:360)
==16746==  Address 0x48512a0 is 0 bytes inside data symbol "ctx_list_lock"
==16746== 
==16746== Possible data race during write of size 4 at 0x48512A4 by thread #4
==16746== Locks held: 1, at address 0x48512A0
==16746==    at 0x4849D28: triton_context_unregister (triton.c:442)
==16746==    by 0x510D680: pppoe_server_free (pppoe.c:1600)
==16746==    by 0x510C6B0: pppoe_serv_close (pppoe.c:1291)
==16746==    by 0x48495E1: ctx_thread (triton.c:287)
==16746==    by 0x484921E: triton_thread (triton.c:192)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746== 
==16746== This conflicts with a previous read of size 4 by thread #5
==16746== Locks held: none
==16746==    at 0x48490AD: triton_thread (triton.c:163)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x482F40F: ??? (in /usr/lib/valgrind/vgpreload_helgrind-x86-linux.so)
==16746==    by 0x486241A: start_thread (in /tmp/debug/lib/libpthread-2.22.so)
==16746==    by 0x4C0D92D: clone (in /tmp/debug/lib/libc-2.22.so)
==16746==  Address 0x48512a4 is 0 bytes inside data symbol "terminate"
==16746== 
==16746== 
==16746== Use --history-level=approx or =none to gain increased speed, at
==16746== the cost of reduced accuracy of conflicting-access information
==16746== For lists of detected and suppressed errors, rerun with: -s
==16746== ERROR SUMMARY: 36 errors from 12 contexts (suppressed: 2536 from 398)

Это уже последний срез https://github.com/accel-ppp/accel-ppp на текущий момент времени.