Ayuda con coredump generado por Asterisk

344 views
Skip to first unread message

Miguel Alberto Sanz Pardo

unread,
Jun 20, 2017, 6:11:17 AM6/20/17
to asterisk-es
Hola buenos días,


Se me ha caído la centralita (Asterisk 11.21.2) y se ha generado un coredump pero no logro interpretar exactamente qué puede estar pasando para que se haya caido.

He ejecutado este comando:

# gdb -se "asterisk" -ex "bt full" -ex "thread apply all bt" --batch -c /tmp/core.26252 > /tmp/backtrace.txt

Comparto con vosotros el backtrace.txt a ver si alguien puede darme un poco de luz acerca de lo que puede estar pasando.


El Backtrace comienza con algo de este estilo:

Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/sbin/asterisk -g'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f5a5a5d5120 in list_add () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
#0  0x00007f5a5a5d5120 in list_add () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
No symbol table info available.
#1  0x00007f5a5aae8132 in my_SQLAllocStmt () from /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
No symbol table info available.
...

un saludo y muchas gracias por vuestra colaboración
backtrace.txt

Raúl Alexis Betancor Santana

unread,
Jun 20, 2017, 7:01:46 AM6/20/17
to aster...@googlegroups.com
A bote pronto ... acceso a puntero de resulset de una consulta a MySQL inválido. Aunque la AllocStmt se usa cuando va a preparar para enviar la consulta ...

En cualquier caso, petada al consultar la DB.



--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Miguel Alberto Sanz Pardo

unread,
Jun 20, 2017, 8:22:03 AM6/20/17
to asterisk-es
Umh, gracias por la respuesta Raúl


Entonces al tratar de acceder a un puntero de una consula a MySQL inválida la centralita cae por completo, vaya tela.

Quizás el canal SCCP está tratando de acceder a donde no debe al tratar de guardar la info., no?

Actualmente dispongo de algo de este estilo con respecto a las DB que estoy usando:


FreePBXSec*CLI> odbc show all

ODBC DSN Settings
-----------------

  Name:   asterisk
  DSN:    MySQL-asterisk
    Last connection attempt: 1970-01-01 01:00:00
  Pooled: No
  Connected: Yes

  Name:   asteriskcdrdb
  DSN:    MySQL-asteriskcdrdb
    Last connection attempt: 1970-01-01 01:00:00
  Pooled: No
  Connected: Yes

res_odbc.conf:
[asteriskcdrdb]
enabled=>yes
dsn=>MySQL-asteriskcdrdb
pooling=>no
limit=>1
pre-connect=>yes
username=>asteriskuser
password=>xxxx

[asterisk]
enabled=>yes
dsn=>MySQL-asterisk
pooling=>no
limit=>1
pre-connect=>yes
username=>asteriskuser
password=>xxxx


odbc.ini:
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3

[MySQL-asterisk]
Description=MySQL connection to 'asterisk' database
driver=MySQL
server=localhost
database=asterisk
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3


odbcinst.ini:
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1


cdr_adaptive_odbc.conf:
[asteriskcdr]
connection=asteriskcdrdb
table=cdr
alias start=calldate

FreePBXSec*CLI> cdr show status

Call Detail Record (CDR) settings
----------------------------------
  Logging:                    Enabled
  Mode:                       Simple
  Log unanswered calls:       No
  Log congestion:             No

* Registered Backends
  -------------------
    cdr-custom
    Adaptive ODBC
    res_config_sqlite



En el coredump aparece algo de este estilo, es como si el fallo se produjera cuando estamos tratando de guardar info. en el cdr a partir del cdr_adaptive_odbc, no?


[Thread debugging using libthread_db enabled]

Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/sbin/asterisk -g'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f5a5a5d5120 in list_add () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
#0  0x00007f5a5a5d5120 in list_add () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
No symbol table info available.
#1  0x00007f5a5aae8132 in my_SQLAllocStmt () from /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
No symbol table info available.
#2  0x00007f5a5b787af4 in ?? () from /usr/lib/x86_64-linux-gnu/libodbc.so.2

No symbol table info available.
#3  0x00007f5a3ecbec30 in generic_prepare (obj=0x18e4c78, data=0x7f59c407e718) at cdr_adaptive_odbc.c:314
        res = 48
        i = 0
        stmt = 0x0
        nativeerror = 0
        numfields = 0
        diagbytes = 0
        state = "p\002\000\000\000\000\000\000xL"
        diagnostic = '\000' <repeats 32 times>, "\300\342\001\\\000\000\000\000\301\342\001\\Y\177\000\000\000\000\001\\Y\177\000\000\000\000\000\000\000\000\000\000\277\346\001\\Y\177\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377", '\000' <repeats 16 times>, "\360\337\001\\Y\177\000\000\377\377\377\377Y\177\000\000y\000\000\000\000\000\000\000\030\341\001\\Y\177\000\000|\316O", '\000' <repeats 13 times>, " L\216\001\000\000\000\000\002\035\237[Z\177\000\000\220-\237[Z\177\000\000\001\200\255\373p\002\000\000K\032\237[Z\177\000\000\301\342\001\\Y\177\000\000"...
        __PRETTY_FUNCTION__ = "generic_prepare"
#4  0x00007f5a5b9ec904 in ast_odbc_prepare_and_execute (obj=0x18e4c78, prepare_cb=0x7f5a3ecbebe8 <generic_prepare>, data=0x7f59c407e718) at res_odbc.c:632
        res = 0
        i = 0
        attempt = 0
        nativeerror = 0
        numfields = 0
        diagbytes = 0
        state = "\370Yu\002\000\000\000\000\000p"
        diagnostic = "\360\340\001\\\346\000\000\000\231\000\000\000\200\001\000\000\340\340\001\\Y\177\000\000\211\262X\000\000\000\000\000\020\341\001\\Y\177\000\000R$\314>Z\177\000\000\000\000\000\000\000\000\000\000\310\346\001\\Y\177\000\000\340\341\001\\Y\177\000\000\345\264X\000\000\000\000\000\060\347\001\\Y\177\000\000R$\314>Z\177\000\000\000\000\000\000\000\000\000\000\310\346\001\\Y\177\000\000\030\000\000\000\060\000\000\000\360\341\001\\Y\177\000\000\060\341\001\\Y\177\000\000\220\240%\304\346\000\000\000p\341\001\\Y\177\000\000\213\177F\000\000\000\000\000l\342\001\\Y\177\000\000H/\034\304Y\177\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\v^Z\000\000\000\000\000"...
        stmt = 0x1bc5c01e730
        __PRETTY_FUNCTION__ = "ast_odbc_prepare_and_execute"
#5  0x00007f5a3ecc17c0 in odbc_log (cdr=0x7f59c4057000) at cdr_adaptive_odbc.c:733
        first = 0
        tableptr = 0x278de50
        entry = 0x0
        obj = 0x18e4c78
        sql = 0x7f59c407e700
        sql2 = 0x7f59c41c2f30
        tmp = 0x7f595c01e2cb ""
        colbuf = "\000neumologia\000\063\061\070\000AAB\000>\000\000\000\001\000\000\000\000\000\000\000\312\343HY\000\000\000\000\313\301\003\000\000\000\000\000\062\000\000\000:\000\000\000\n\000\000\000\024\000\000\000\005\000\000\000u\000\000\000\002\000\000\000\252\000\000\000\001\000\000\000\000\000\000\000 \034", '\000' <repeats 14 times>, "\313\301\003\000\000\000\000\000\bZ\003\304Y\177\000\000P\202\036\304Y\177\000\000\340\277\v\304Y\177\000\000\024\000\000\000\000\000\000\000\260\061]\000\000\000\000\000ؿ\v\304Y\177\000\000\006\000\000\000\000\000\000\000\332\316O\000\000\000\000\000\360\277\v\304Y\177\000\000\000<\003\304Y\177\000\000\236\357Y\000\000\000\000\000\360\360"...
        colptr = 0x0
        stmt = 0x0
        rows = 0
        __PRETTY_FUNCTION__ = "odbc_log"
#6  0x000000000046bdd3 in post_cdr (cdr=0x7f59c4057000) at cdr.c:1192
        i = 0x25e3130
        __PRETTY_FUNCTION__ = "post_cdr"
#7  0x000000000046c7de in ast_cdr_detach (cdr=0x7f59c4057000) at cdr.c:1396
        newtail = 0x4000000000
        curr = 32601
        submit_batch = 0
        __PRETTY_FUNCTION__ = "ast_cdr_detach"
#8  0x00000000004d23cb in ast_bridge_call (chan=0x7f597c01f578, peer=0x7f59c4142828, config=0x7f595c01fc90) at features.c:4848
        f = 0x0
        who = 0x7f597c01f578
        chan_featurecode = '\000' <repeats 11 times>
        peer_featurecode = '\000' <repeats 11 times>
        orig_channame = "SCCP/17489-00000AA9\000Y\177\000\000\260\351\001\\Y\177\000\000\b\264\206\001", '\000' <repeats 12 times>, "\350\351\001\\Y\177\000\000\320\351\001\\Y\177\000\000\000\000\000\000\000\000\000\000 \000\000\304Y\177\000"
        orig_peername = "SCCP/17300-00000AAB\000\000\000\000\000\020\211\017\304Y\177", '\000' <repeats 18 times>, "\060\000\000\000\060\000\000\000@\354\001\\Y\177\000\000`\353\001\\Y\177\000\000\260\351\001\\Y\177\000"
        res = -1
        diff = 51
        hasfeatures = 0
        hadfeatures = 0
        sendingdtmfdigit = 0
        we_disabled_peer_cdr = 0
        aoh = 0x7f595c01ec50
        bridge_cdr = 0x7f59c4057000
        chan_cdr = 0x7f597c0092b0
        peer_cdr = 0x7f59c403b3c0
        new_chan_cdr = 0x7f597c0092b0
        new_peer_cdr = 0x0
        silgen = 0x0
        hangup_run = 1
        __PRETTY_FUNCTION__ = "ast_bridge_call"
#9  0x00007f5a3b197a05 in dial_exec_full (chan=0x7f597c01f578, data=0x7f595c022240 "SCCP/17300,,trI", peerflags=0x7f595c0200a0, continue_exec=0x0) at app_dial.c:3047
        number = 0x7f595c01ed00 "17300"
        res = 0
        rest = 0x0
        cur = 0x0
        out_chans = {first = 0x0, last = 0x0}
        outgoing = 0x7f59c405aa50
        tmp = 0x0
        peer = 0x7f59c4142828
        to = -1
        num = {chan = 0x7f597c01f578, busy = 0, congestion = 0, nochan = 0}
        cause = 0
        config = {features_caller = {flags = 0}, features_callee = {flags = 2}, start_time = {tv_sec = 1497949097, tv_usec = 600410}, nexteventts = {tv_sec = 0, tv_usec = 0}, feature_start_time = {tv_sec = 0, tv_usec = 0}, feature_timer = 0, timelimit = 0, play_warning = 0, warning_freq = 0, warning_sound = 0x0, end_sound = 0x0, start_sound = 0x0, flags = 2, end_bridge_callback = 0x7f5a3b192352 <end_bridge_callback>, end_bridge_callback_data = 0x7f597c01f578, end_bridge_callback_data_fixup = 0x7f5a3b1924c5 <end_bridge_callback_data_fixup>}
        calldurationlimit = {tv_sec = 0, tv_usec = 0}
        dtmfcalled = 0x0
        dtmfcalling = 0x0
        dtmf_progress = 0x0
        pa = {sentringing = 1, privdb_val = 0, privcid = '\000' <repeats 255 times>, privintro = '\000' <repeats 1023 times>, status = "ANSWER\000R\000GS", '\000' <repeats 244 times>}
        sentringing = 0
        moh = 0
        outbound_group = 0x0
        result = 0
        parse = 0x7f595c01ed40 "SCCP"
        opermode = 0
        delprivintro = 0
        args = {argc = 3, argv = 0x7f595c01f648, peers = 0x7f595c01ed40 "SCCP", timeout = 0x7f595c01ed4b "", options = 0x7f595c01ed4c "trI", url = 0x0}
        opts = {flags = 671744}
        opt_args = {0x7f595c01f6e0 "", 0x5ce3a5 "'\n", 0x0, 0x7f5a00000000 " ", 0x7f595c01fbc0 "", 0x7f595c01fbb0 "", 0x596ffb "", 0x5ce3a5 "'\n", 0x0, 0x7f5a00000000 " ", 0x0, 0x0, 0x7f595c01fc20 "", 0x0, 0x7f5a00000000 " ", 0x0, 0x0, 0x0, 0x7f5a8e3e6920 <_IO_vfprintf_internal+22368> "8\373\377\377\351\245\361\377\377L\211\215\070\373\377\377\061\300H\203\311\377L\211\347\362\256L\211\347H\211\316H\367\326\350ǵ\n"}
        datastore = 0x7f59c403f8d0
        fulldial = 0
        num_dialed = 1
        ignore_cc = 0
        device_name = "SCCP/17300\000\060\060\060\060\060AAB\000\000\000\000\000iO>\216Z\177\000\000`\373\001\\Y\177\000\000P\373\001\\Y\177\000\000\005c\\\000\000\000\000\000\002", '\000' <repeats 15 times>, "\215\022>\216Z\177\000"
        forced_clid_name = "\300\376\001\\Y\177\000\000\000\376\001\\Y\177\000\000\000\373\001\\Y\177\000\000\360\372\001\\Y\177\000\000\214Z\\\000\000\000\000\000\060\000\000\000\060\000\000\000\360\376\001\\Y\177\000\000\060\376\001\\Y\177\000\000\060\373\001\\Y\177\000\000 \373\001\\Y\177\000"
        stored_clid_name = "\000H\\\000\000\000\000\000\232i>\216Z\177\000\000X\365\001|Y\177\000\000_H\\\000\000\000\000\000\253\067\302\000\000\000\000\000\205\000\000\000Z\177\000\000aH\\\000\000\000\000\000s6\302XZ\177\000\000\037\067\302XZ\177\000\000\060\000\000\000\060\000\000"
        force_forwards_only = 0
        forced_clid = {name = {str = 0x0, char_set = 1, presentation = 0, valid = 0 '\000'}, number = {str = 0x0, plan = 0, presentation = 1, valid = 0 '\000'}, subaddress = {str = 0x0, type = 0, odd_even_indicator = 0 '\000', valid = 0 '\000'}, tag = 0x0}
        stored_clid = {name = {str = 0x0, char_set = 1, presentation = 0, valid = 0 '\000'}, number = {str = 0x7f595c01ed20 "17300", plan = 0, presentation = 0, valid = 1 '\001'}, subaddress = {str = 0x0, type = 0, odd_even_indicator = 0 '\000', valid = 0 '\000'}, tag = 0x0}
        caller = {id = {name = {str = 0x0, char_set = 1, presentation = 0, valid = 1 '\001'}, number = {str = 0x0, plan = 0, presentation = 0, valid = 1 '\001'}, subaddress = {str = 0x0, type = 0, odd_even_indicator = 0 '\000', valid = 0 '\000'}, tag = 0x0}, ani = {name = {str = 0x0, char_set = 1, presentation = 0, valid = 0 '\000'}, number = {str = 0x0, plan = 0, presentation = 0, valid = 1 '\001'}, subaddress = {str = 0x0, type = 0, odd_even_indicator = 0 '\000', valid = 0 '\000'}, tag = 0x0}, priv = {name = {str = 0x0, char_set = 1, presentation = 0, valid = 0 '\000'}, number = {str = 0x0, plan = 0, presentation = 0, valid = 0 '\000'}, subaddress = {str = 0x0, type = 0, odd_even_indicator = 0 '\000', valid = 0 '\000'}, tag = 0x0}, ani2 = 0}
        __PRETTY_FUNCTION__ = "dial_exec_full"
#10 0x00007f5a3b198043 in dial_exec (chan=0x7f597c01f578, data=0x7f595c022240 "SCCP/17300,,trI") at app_dial.c:3130
        peerflags = {flags = 524288}
#11 0x0000000000522742 in pbx_exec (c=0x7f597c01f578, app=0x27c2a30, data=0x7f595c022240 "SCCP/17300,,trI") at pbx.c:1679
        res = 0
        u = 0x7f59c4014f00
        saved_c_appl = 0x2f38950 "Macro"
        saved_c_data = 0x7f595c0274a0 "dial-one,,tr,17300"
        __PRETTY_FUNCTION__ = "pbx_exec"
#12 0x000000000052cb5f in pbx_extension_helper (c=0x7f597c01f578, con=0x0, context=0x7f597c0203c8 "macro-dial-one", exten=0x7f597c020418 "s", priority=45, label=0x0, callerid=0x7f59c413eb80 "17489", action=E_SPAWN, found=0x7f595c02485c, combined_find_spawn=1) at pbx.c:4972
        e = 0x228c4d0
        app = 0x27c2a30
        substitute = 0x7f595c020130 "${DSTRING},${ARG1},${D_OPTIONS}"
        res = 0
        q = {incstack = {0x0 <repeats 128 times>}, stacklen = 0, status = 5, swo = 0x0, data = 0x0, foundcontext = 0x7f597c0203c8 "macro-dial-one"}
        passdata = "SCCP/17300,,trI\000trII)\000ok,\000n  Medica", '\000' <repeats 45 times>, "CHANNEL(language)=ca\000\000ogia\000number)=17300\000fault\000/17489_17300@from-ccss-)\000m,17300)", '\000' <repeats 904 times>...
        matching_action = 0
        __PRETTY_FUNCTION__ = "pbx_extension_helper"
#13 0x000000000053004e in ast_spawn_extension (c=0x7f597c01f578, context=0x7f597c0203c8 "macro-dial-one", exten=0x7f597c020418 "s", priority=45, callerid=0x7f59c413eb80 "17489", found=0x7f595c02485c, combined_find_spawn=1) at pbx.c:6187
No locals.
#14 0x00007f5a58c22206 in _macro_exec (chan=0x7f597c01f578, data=0x7f595c0274a0 "dial-one,,tr,17300", exclusive=0) at app_macro.c:413
        c = 0x228cce0
        e = 0x228c4d0
        foundx = 1
        s = 0x7f59c4062efc "2"
        tmp = 0x7f595c024780 "dial-one"
        cur = 0x0
        rest = 0x0
        macro = 0x7f595c024780 "dial-one"
        fullmacro = "macro-dial-one\000\000\061\064\071\067\071\064\071\060\070\066.5318\000\000S\002\\Y\177\000\000\242\361F\000\000\000\000\000\377\377\377\377\001\000\000\000\220\203\000|k\023\000\000K\300\\", '\000' <repeats 12 times>
        varname = "ARG3\000\000\000\000\332\316O\000\000\000\000\000\a\000\000\000f\026\000\000\000\027\201\000\000\000\000\000\203sZ\000\000\000\000\000\020wZ\000\000\000\000\000\t\000\000\000\242\002\000\000\voZ\000\000\000\000\000 S\002\\Y\177\000\000\314\"Q\000\000\000\000"
        runningapp = "Dial\000f\000\000\300Z\\\000\000\000\000\000\000|\201\000\000\000\000\000\360\246\\\000\000\000\000\000\020Q\002\\f\026\000\000KV\\\000\000\000\000\000@\277.\304\001\000\000\000\b\264\206\001\000\000\000\000`Q\002\\Y\177\000\000_\304D\000\000\000\000"
        runningdata = "${DSTRING},${ARG1},${D_OPTIONS}\000t(D_OPTIONS=${REPLACE(D_OPTIONS,T)}I)\000TE_DISPLAY}\000\" = \"\"]?godial\000kvm):${ARG2})}\000TE(${DEXTEN})}\"=\"UNKNOWN\"]?continue\000\000\000\000\000\260M\002\\Y\177\000\000\360\211\017\304Y\177\000\000\260M\002\\Y\177\000\000\005c\\\000\000\000\000\000HO\002\\Y\177\000\000\212\000\000\000\000\000\000\000"...
        oldargs = {0x0, 0x7f59c409b770 "novm", 0x7f59c4107020 "17300", 0x7f59c40333c0 "0", 0x0 <repeats 77 times>}
        argc = 4
        x = 5228921
        res = 0
        oldexten = "s", '\000' <repeats 254 times>
        oldpriority = 7
        gosub_level = 0
        pc = "7\000\000\000&\000\000\000\002\000\000\000\000\000\000\000\ac\\", '\000' <repeats 14 times>, "J\002\\Y\177\000\000\030\000\000\000\060\000\000\000\200P\002\\Y\177\000\000\300O\002\\Y\177\000\000\000\000\000\000&\000\000\000\377\377\377\377Z\177\000"
        depthc = "2\000\002\\Y\177\000\000\ac\\"
        oldcontext = "macro-exten-vm", '\000' <repeats 65 times>
        inhangupc = 0x0
        offset = 1
        depth = 1
        maxdepth = 7
        setmacrocontext = 0
        autoloopflag = 512
        inhangup = 0
        tmp_subst = 0x7f59c4233060
        save_macro_exten = 0x7f59c4019f40 "17300"
        save_macro_context = 0x7f59c4154b60 "from-internal"
        save_macro_priority = 0x7f59c40222f0 "2"
        save_macro_offset = 0x0
        macro_store = 0x7f59c4030f20
        __PRETTY_FUNCTION__ = "_macro_exec"
#15 0x00007f5a58c2336c in macro_exec (chan=0x7f597c01f578, data=0x7f595c0274a0 "dial-one,,tr,17300") at app_macro.c:582
No locals.
#16 0x0000000000522742 in pbx_exec (c=0x7f597c01f578, app=0x2f388f0, data=0x7f595c0274a0 "dial-one,,tr,17300") at pbx.c:1679
        res = 0
        u = 0x7f59c408e490
        saved_c_appl = 0x2f38950 "Macro"
        saved_c_data = 0x7f595c02c6c0 "exten-vm,novm,17300,0,0,0"
        __PRETTY_FUNCTION__ = "pbx_exec"
#17 0x000000000052cb5f in pbx_extension_helper (c=0x7f597c01f578, con=0x0, context=0x7f597c0203c8 "macro-dial-one", exten=0x7f597c020418 "s", priority=7, label=0x0, callerid=0x7f59c413eb80 "17489", action=E_SPAWN, found=0x7f595c029abc, combined_find_spawn=1) at pbx.c:4972
        e = 0x22831c0
        app = 0x2f388f0
        substitute = 0x7f595c025380 "dial-one,${RT},${DIAL_OPTIONS},${EXTTOCALL}"
        res = 0
        q = {incstack = {0x0 <repeats 128 times>}, stacklen = 0, status = 5, swo = 0x0, data = 0x0, foundcontext = 0x7f597c0203c8 "macro-dial-one"}
        passdata = "dial-one,,tr,17300\000check against dontcare\000\063\060\060", '\000' <repeats 1267 times>...
        matching_action = 0
        __PRETTY_FUNCTION__ = "pbx_extension_helper"
#18 0x000000000053004e in ast_spawn_extension (c=0x7f597c01f578, context=0x7f597c0203c8 "macro-dial-one", exten=0x7f597c020418 "s", priority=7, callerid=0x7f59c413eb80 "17489", found=0x7f595c029abc, combined_find_spawn=1) at pbx.c:6187
No locals.
#19 0x00007f5a58c22206 in _macro_exec (chan=0x7f597c01f578, data=0x7f595c02c6c0 "exten-vm,novm,17300,0,0,0", exclusive=0) at app_macro.c:413
        c = 0x2282ec0
        e = 0x22831c0
        foundx = 1
        s = 0x0
        tmp = 0x7f595c0299e0 "exten-vm"
        cur = 0x0
        rest = 0x0
        macro = 0x7f595c0299e0 "exten-vm"
        fullmacro = "macro-exten-vm\000\000\061\064\071\067\071\064\071\060\070\066.5318\000`\245\002\\Y\177\000\000\242\361F\000\000\000\000\000\377\377\377\377\001\000\000\000\220\203\000|k\023\000\000K\300\\", '\000' <repeats 12 times>
        varname = "ARG5\000\000\000\000\332\316O\000\000\000\000\000\002\000\000\000f\026\000\000\000\027\201\000\000\000\000\000\203sZ\000\000\000\000\000\020wZ\000\000\000\000\000\t\000\000\000\242\002\000\000\voZ\000\000\000\000\000\200\245\002\\Y\177\000\000\314\"Q\000\000\000\000"
        runningapp = "Macro\000\000\000\300Z\\\000\000\000\000\000\000|\201\000\000\000\000\000\360\246\\\000\000\000\000\000p\243\002\\f\026\000\000KV\\\000\000\000\000\000J\277.\304\001\000\000\000\b\264\206\001\000\000\000\000\300\243\002\\Y\177\000\000_\304D\000\000\000\000"
        runningdata = "dial-one,${RT},${DIAL_OPTIONS},${EXTTOCALL}\000)\000E})\000ternal)}\000DE})\000,${ARG1},1\000IDNUM})}]?${REALCALLERIDNUM}:unknown)})}\000\064}\"=\"1\" | \"${ARG5}\"=\"1\"]?${RINGTIMER}:)}\000\177\000\000z\234\037\304Y\177\000\000\020\240\002\\Y\177\000\000\005c\\\000\000\000\000\000\250\241\002\\Y\177\000\000-\000\000\000\000\000\000\000"...
        oldargs = {0x0 <repeats 81 times>}
        argc = 6
        x = 5228921
        res = 0
        oldexten = "17300", '\000' <repeats 250 times>
        oldpriority = 2
        gosub_level = 0
        pc = "2\000\000\000\000\000\000\000\002\000\000\000Z\177\000\000\ac\\", '\000' <repeats 13 times>, "`\234\002\\Y\177\000\000\030\000\000\000\060\000\000\000\340\242\002\\Y\177\000\000 \242\002\\Y\177\000\000\000\000\000\000\000\000\000\000\377\377\377\377Z\177\000"
        depthc = "1\000\002\\Y\177\000\000\ac\\"
        oldcontext = "from-internal", '\000' <repeats 66 times>
        inhangupc = 0x0
        offset = 1
        depth = 0
        maxdepth = 7
        setmacrocontext = 1
        autoloopflag = 512
        inhangup = 0
        tmp_subst = 0x7f59c40a53c0
        save_macro_exten = 0x0
        save_macro_context = 0x0
        save_macro_priority = 0x0
        save_macro_offset = 0x0
        macro_store = 0x7f59c4030f20
        __PRETTY_FUNCTION__ = "_macro_exec"
#20 0x00007f5a58c2336c in macro_exec (chan=0x7f597c01f578, data=0x7f595c02c6c0 "exten-vm,novm,17300,0,0,0") at app_macro.c:582
No locals.
#21 0x0000000000522742 in pbx_exec (c=0x7f597c01f578, app=0x2f388f0, data=0x7f595c02c6c0 "exten-vm,novm,17300,0,0,0") at pbx.c:1679
        res = 0
        u = 0x7f59c4149650
        saved_c_appl = 0x0
        saved_c_data = 0x0
        __PRETTY_FUNCTION__ = "pbx_exec"
#22 0x000000000052cb5f in pbx_extension_helper (c=0x7f597c01f578, con=0x0, context=0x7f597c0203c8 "macro-dial-one", exten=0x7f597c020418 "s", priority=2, label=0x0, callerid=0x7f597c013af0 "\300\177", action=E_SPAWN, found=0x7f595c02ed64, combined_find_spawn=1) at pbx.c:4972
        e = 0x20c4f30
        app = 0x2f388f0
        substitute = 0x0
        res = 0
        q = {incstack = {0x22b3490 "from-internal", 0x22b5230 "from-internal-noxfer", 0x2298530 "from-internal-noxfer-additional", 0x22b11a0 "from-internal-xfer", 0x229a580 "from-internal-custom", 0x22964c0 "from-internal-additional", 0x1bc61f0 "app-blacklist", 0x1bdd970 "ext-findmefollow", 0x1ce6c70 "fmgrps", 0x1d029f0 "app-calltrace", 0x1d03580 "app-speakextennum", 0x1d08330 "app-speakingclock", 0x1d0ab60 "app-echo-test", 0x1d197b0 "park-hints", 0x18820e0 "parkedcalls", 0x1d1d690 "app-pbdirectory", 0x1d1e2b0 "ext-queues", 0x1f16e50 "app-recordings", 0x1f1cde0 "ext-group", 0x1f3f1e0 "app-dialvm", 0x1f43200 "app-vmmain", 0x1f44500 "ext-local-confirm", 0x1f45800 "findmefollow-ringallv2", 0x1f46220 "app-pickup", 0x0 <repeats 104 times>}, stacklen = 24, status = 5, swo = 0x0, data = 0x0, foundcontext = 0x229725a "ext-local"}
        passdata = "exten-vm,novm,17300,0,0,0\000\061\000SIP/elastix-cc-000004a7\000SCCP/12078-00000A64\000Dial\000SCCP/12078,,tr\000\062\060\061\067-06-20 10:55:39\000\062\060\061\067-06-20 10:55:43\000\062\060\061\067-06-20 10:56:21\000\064\062\000\063\070\000ANSWERED\000DOCUMENTA/\021!\000\000\000\000\000\004\000\000\002\000\000\037\001\200\032\311R(\000(\000"...
        matching_action = 0
        __PRETTY_FUNCTION__ = "pbx_extension_helper"
#23 0x000000000053004e in ast_spawn_extension (c=0x7f597c01f578, context=0x7f597c0203c8 "macro-dial-one", exten=0x7f597c020418 "s", priority=2, callerid=0x7f597c013af0 "\300\177", found=0x7f595c02ed64, combined_find_spawn=1) at pbx.c:6187
No locals.
#24 0x00000000005316c6 in __ast_pbx_run (c=0x7f597c01f578, args=0x0) at pbx.c:6662
        digit = 0
        invalid = 0
        timeout = 0
        dst_exten = "\000\356\002\\Y\177\000\000p\375\002\\Y\177\000\000\060\355\002\\Y\177\000\000\240\304/\215Z\177\000\000\000\367\002\\Y\177\000\000D4\242\210Z\177\000\000(\356\002\\Y\177\000\000\060\356\002\\Y\177\000\000\000\000\000\000\000\000\000\000\070\356\002\\Y\177", '\000' <repeats 18 times>, "`\356\002\\Y\177", '\000' <repeats 42 times>, "@\356\002\\Y\177\000\000H\356\002\\Y\177\000\000P\356\002\\Y\177\000\000X\356\002\\Y\177\000\000h\356\002\\Y\177\000\000\000\000\000\000\000\000\000\000p\356\002\\Y\177\000\000"...
        pos = 0
        found = 1
        res = 0
        autoloopflag = 0
        error = 0
        pbx = 0x7f59c40766f0
        callid = 0x0
        __PRETTY_FUNCTION__ = "__ast_pbx_run"
#25 0x0000000000533018 in pbx_thread (data=0x7f597c01f578) at pbx.c:6992
        c = 0x7f597c01f578
#26 0x000000000058c4c9 in dummy_start (data=0x7f597c000c10) at utils.c:1223
        __cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {0, -3345761825691060454, 0, 140023319416400, 19, 140021772515072, -3345761825649117414, 3396787159896110874}, __mask_was_saved = 0}}, __pad = {0x7f595c02ef70, 0x0, 0x0, 0x7f5a8d5062e8 <__pthread_keys+8>}}
        __cancel_routine = 0x43ffaa <ast_unregister_thread>
        __cancel_arg = 0x7f595c02f700
        __not_first_call = 0
        ret = 0x7f5a8e73c880 <internal_trans_names>
        a = {start_routine = 0x532ff3 <pbx_thread>, data = 0x7f597c01f578, name = 0x7f597c000e50 "pbx_thread", ' ' <repeats 11 times>, "started at [ 7018] pbx.c ast_pbx_start()"}
#27 0x00007f5a8d2f60a4 in start_thread (arg=0x7f595c02f700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f595c02f700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140021772515072, 3396786543417833242, 0, 140023319416400, 19, 140021772515072, -3345761825684768998, -3344251462218336486}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#28 0x00007f5a8e48387d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.


Raúl Alexis Betancor Santana

unread,
Jun 20, 2017, 9:14:55 AM6/20/17
to aster...@googlegroups.com
Hombre ... las fechas de 1970 no inspiran mucha confianza en que eso esté funcionando como debe.

Peta la función prepare_and_execute ... que me juego los huevos y no los pierdo, a que el problema es que estás mandando campos del CDR a null y se está grillando.
Cambia el dialplan y pon un NOOP de CDR(all) y verás que valores tienes antes de que los intente guardar.



De: "miguelsanzpardo" <miguels...@gmail.com>
Para: "asterisk-es" <aster...@googlegroups.com>

Miguel Alberto Sanz Pardo

unread,
Jun 20, 2017, 11:34:17 AM6/20/17
to asterisk-es
Acabo de encontrar esto por internet:

https://issues.asterisk.org/jira/browse/ASTERISK-25833

Había un tío al que le ocurría un error similar hasta que actualizó el driver del odbc. No sé si probar a ver.

En principio según el error parece que incluso no llego a hacer la consulta y enviar nada ¿No?

static SQLHSTMT generic_prepare(struct odbc_obj *obj, void *data)
{
    int res, i;
    SQLHSTMT stmt;
    SQLINTEGER nativeerror = 0, numfields = 0;
    SQLSMALLINT diagbytes = 0;
    unsigned char state[10], diagnostic[256];

    res = SQLAllocHandle (SQL_HANDLE_STMT, obj->con, &stmt);
    if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
        ast_log(LOG_WARNING, "SQL Alloc Handle failed!\n");
        return NULL;
    }


Lo de las fechas en todos los sistemas que he instalado pone lo mismo, lo de  "Last connection attempt: 1970-01-01 01:00:00", y no me ha dado problemas, así que supongo que no estará mal aunque se vea extraño.


Lo raro es que esto no me ocurre todos los días, me ocurre cada X semanas, en caso de que el problema sea el enviar un nulo habría que tratar de ver cuando ocurre esto exactamente.
Lo del NoOp() a ver como lo hago, porque estoy usando el FreePBX y habría que hacer algo para meterle mano en mitad de la llamada, quizás una macro.

Raúl Alexis Betancor Santana

unread,
Jun 20, 2017, 11:55:50 AM6/20/17
to aster...@googlegroups.com
Puede ser un memory leak del driver odbc, al fin y al cabo el trace no peta en Asterisk, peta en la libodbc llamando a mysql.



De: "miguelsanzpardo" <miguels...@gmail.com>
Para: "asterisk-es" <aster...@googlegroups.com>
Enviados: Martes, 20 de Junio 2017 16:34:17
Asunto: Re: [Asterisk-ES] Ayuda con coredump generado por Asterisk
Acabo de encontrar esto por internet:

--

Miguel Alberto Sanz Pardo

unread,
Jun 20, 2017, 12:20:00 PM6/20/17
to asterisk-es
Estoy tratando de actualizar el driver del odbc pero no me deja.

# odbcinst --version
unixODBC 2.3.1

En teoría ya existe la versión 2.3.4 pero al usar el comando # apt-get install libmyodbc no consigo que actualice.

Pablo Umanzor

unread,
Jun 20, 2017, 12:30:40 PM6/20/17
to aster...@googlegroups.com
apt-get install libmyodbc --reinstall

tb puedes configurar en apt source.list apuntar a backports , apt update , install

solo como comentario el sabado pasado se libero debian 9 stretch

Atte
Pablo

Miguel Alberto Sanz Pardo

unread,
Jun 20, 2017, 12:34:58 PM6/20/17
to asterisk-es
En teoría ¿cual es la última versión de obdc para debian? No sea que la última sea la 2.3.1 como creo haber entendido: https://packages.debian.org/jessie/libs/odbcinst y realmente no pueda actualizarla más a no ser que actualice el S.O.

Pablo Umanzor

unread,
Jun 20, 2017, 12:41:20 PM6/20/17
to aster...@googlegroups.com
prueba primero hacer un 

apt-get update

luego 

apt-get install libmyodbc --reinstall




Atte
Pablo 

Miguel Alberto Sanz Pardo

unread,
Jun 20, 2017, 1:11:43 PM6/20/17
to asterisk-es
Ya probe y nada, no actualiza a ninguna versión superior

No obstante, si no me confundo el error viene desde libmysqlclient, lo que pasa es que va arrastrando errores --> odbc, cdr_odbc, etc

Trataré de actualizar mysql:
- apt-get install mysql-server mysql-client
- apt-get install libmysqlclient-dev

un saludo

Alfio munoz

unread,
Jun 20, 2017, 1:41:04 PM6/20/17
to aster...@googlegroups.com
Hola, trataste de reparar y optimizar las bases de datos?

Puedes que tengas un error en alguna tabla y eso impide el arranque normal.



Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es+unsubscribe@googlegroups.com.

Raúl Alexis Betancor Santana

unread,
Jun 20, 2017, 1:50:21 PM6/20/17
to aster...@googlegroups.com
Eso no debería de producir un core-dump de un cliente que está intentando hacer una consulta  ... petaría antes, al intentar conectar a la base de datos.



Alfio munoz

unread,
Jun 20, 2017, 1:57:20 PM6/20/17
to aster...@googlegroups.com
En la consola de asterisk puedes ver donde se muere? Es decir te muestra algo como que está subiendo y luego se detiene?

Si es así puedes compartir esa información.

Gracias de antemano.


Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es+unsubscribe@googlegroups.com.

Angel Elena

unread,
Jun 20, 2017, 5:04:39 PM6/20/17
to aster...@googlegroups.com

hazte un full debug del mysql o noop de lo que escribes en la bbdd ..... allí pillarás el error

--------------------------------
Ángel Elena Medina       _o)
cr...@craem.net          / \\
http://blog.craem.net  _(___V
@craem_
--------------------------------

-----Mensaje original-----
De:    Miguel Alberto Sanz Pardo <miguels...@gmail.com>
Enviado:    Mar 20-06-2017 18:21


Asunto:    Re: [Asterisk-ES] Ayuda con coredump generado por Asterisk

Para:    asterisk-es <aster...@googlegroups.com>;

> Estoy tratando de actualizar el driver del odbc pero no me deja.
>
> # odbcinst --version
> unixODBC 2.3.1
>
> En teoría ya existe la versión 2.3.4 pero al usar el comando # apt-get install
> libmyodbc no consigo que actualice.
>
>
> El martes, 20 de junio de 2017, 17:55:50 (UTC+2), Latino escribió:
> Puede ser un memory leak del driver odbc, al fin y al cabo el trace no peta en
> Asterisk, peta en la libodbc llamando a mysql.
>
>

> --------------------------------


> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com.
> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com.
> Visita este grupo en https://groups.google.com/group/asterisk-es.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.
>
> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org


> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com


> Para publicar en este grupo, envía un correo electrónico a

Rodrigo Ramírez Norambuena

unread,
Jun 20, 2017, 10:06:26 PM6/20/17
to aster...@googlegroups.com
2017-06-20 11:34 GMT-04:00 Miguel Alberto Sanz Pardo
<miguels...@gmail.com>:
> Acabo de encontrar esto por internet:
>
> https://issues.asterisk.org/jira/browse/ASTERISK-25833
>
> Había un tío al que le ocurría un error similar hasta que actualizó el
> driver del odbc. No sé si probar a ver.
>
> En principio según el error parece que incluso no llego a hacer la consulta
> y enviar nada ¿No?
>
> static SQLHSTMT generic_prepare(struct odbc_obj *obj, void *data)
> {
> int res, i;
> SQLHSTMT stmt;
> SQLINTEGER nativeerror = 0, numfields = 0;
> SQLSMALLINT diagbytes = 0;
> unsigned char state[10], diagnostic[256];
>
> res = SQLAllocHandle (SQL_HANDLE_STMT, obj->con, &stmt);
> if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
> ast_log(LOG_WARNING, "SQL Alloc Handle failed!\n");
> return NULL;
> }
>
>


Hola,

La otra vez tuve un problema similar
https://blog.rodrigoramirez.com/crash-asterisk-cores/

La solución fue compilar desde las fuentes UnixODBC 2.3.4 y Asterisk
usando --with-odbc


Saludos!



--
Rodrigo Ramírez Norambuena
http://www.rodrigoramirez.com/

Miguel Alberto Sanz Pardo

unread,
Jun 21, 2017, 2:11:26 AM6/21/17
to asterisk-es
@Alfio

Hola, trataste de reparar y optimizar las bases de datos?
Puedes que tengas un error en alguna tabla y eso impide el arranque normal.

Hola Alfio, dispongo de un cluster activo-pasivo los cuales comparten varias carpetas:
- Las diferentes carpetas de Asterisk
- /var/lib/mysql
- /tftp

Cuando el servicio asterisk cayó el cliente hizo un "service heartbeat stop" en el nodo primario.
De tal manera conmmutó al secundario y los servicios: tftp, apache, mysql y asterisk fueron levantados sin ningún problema.
Supongo que si tuviera algún error no me debería de dejar arrancar de forma nommal la dB de mysql.


@Latino

Eso no debería de producir un core-dump de un cliente que está intentando hacer una consulta  ... petaría antes, al intentar conectar a la base de datos.

En mi caso diría que nadie ha tratado hacer una consulta desde la interfaz de reportes de Asterisk-FreePBX.
Por lo que hemos podido ver diría que:
- O el servicio mysql se ha caido, lo cual ha provocado que el servicio asterisk se haya caido tras ver que éste otro habia caido
- O el servicio asterisk no ha sido capaz de contactar con la dB de mysql(aunque ésta estuviera levantada) y después de varios intentos ha pensado que la
dB de mysql estaba caida y esto ha hecho caer al servicio asterisk


@Alfio

En la consola de asterisk puedes ver donde se muere? Es decir te muestra algo como que está subiendo y luego se detiene?
Si es así puedes compartir esa información.
Gracias de antemano.

En la consola de Asterisk no he podido ver nada porque no estaba conectado en ese momento.
Te adjunto el full.log.
La última llamada fue cursada en la hora 10:58 am, justo ahí pasó algo en mysql(cayó mysql o asterisk no fue capaz de establecer comunicación con mysql y esto provocó la caida del servicio asterisk)


@Craem

hazte un full debug del mysql o noop de lo que escribes en la bbdd ..... allí pillarás el error

El mysql lo tengo configurado para que me loguee los errores pero esta vez no ha logueado ningún error.
Tendré que ver como poner las NoOp() en el dialplan del freepbx con alguna macro, en un extensions.conf a pelo no tiene ningún misterio pero
en el maravilloso dialplan de FreePBX is magic.



@Rodrigo

Hola,
La otra vez tuve un problema similar
https://blog.rodrigoramirez.com/crash-asterisk-cores/
La solución fue compilar desde las fuentes UnixODBC 2.3.4  y Asterisk
usando  --with-odbc

Hola Rodrigo, actualmente uso Debian 8.3, en teoría creo que solo existe hasta la versión 2.3.1 de UnixODBC para Debian 8.X, ya me confimarás
si es así, sino podrías pasarme las fuentes desde donde bajarlo? Cuando compilas Asterisk, odbc no funciona de forma correcta si no añades el
flag --with-odbc? Juraría que cuando compilé mi Asterisk no use ese flag(ni me quiere sonar que apareciera desde el menú de compilación)
Lo compilé con los flags que comentas en tu post:
- DONT_OPTIMIZE.
- DEBUG_THREADS
- BETTER_BACKTRACES
Y puede que con un flags más, tendría que revisarlo.



Muchas gracias a todos por vuestras repuestas
full.log

Miguel Alberto Sanz Pardo

unread,
Jun 21, 2017, 4:34:50 AM6/21/17
to asterisk-es
Ya he hecho pruebas con el FreePBX y se puede hacer algo de este estilo para poder ver los valores que tenemos antes de intentar guardar:

extensions_custom.conf:

[macro-dialout-one-predial-hook]
exten => s,1,NoOp(CDR-CLID: ${CDR(clid)})
same  => n,NoOp(CDR-SRC: ${CDR(src)})
same  => n,NoOp(CDR-DST: ${CDR(dst)})
same  => n,NoOp(CDR-DCONTEXT: ${CDR(dcontext)})
same  => n,NoOp(CDR-CHANNEL: ${CDR(channel)})
same  => n,NoOp(CDR-DSTCHANNEL: ${CDR(dstchannel)})
same  => n,NoOp(CDR-LASTAPP: ${CDR(lastapp)})
same  => n,NoOp(CDR-LASTDATA: ${CDR(lastdata)})
same  => n,NoOp(CDR-START: ${CDR(start)})
same  => n,NoOp(CDR-ANSWER: ${CDR(answer)})
same  => n,NoOp(CDR-END: ${CDR(end)})
same  => n,NoOp(CDR-DURATION: ${CDR(duration)})
same  => n,NoOp(CDR-BILLSEC: ${CDR(billsec)})
same  => n,NoOp(CDR-DISPOSITION: ${CDR(disposition)})
same  => n,NoOp(CDR-AMAFLAGS: ${CDR(amaflags)})
same  => n,NoOp(CDR-ACCOUNTCODE: ${CDR(accountcode)})
same  => n,NoOp(CDR-UNIQUEID: ${CDR(uniqueid)})
same  => n,NoOp(CDR-USERFIELD: ${CDR(userfield)})
same  => n,MacroExit()

[macro-dialout-trunk-predial-hook]
exten => s,1,NoOp(CDR-CLID: ${CDR(clid)})
same  => n,NoOp(CDR-SRC: ${CDR(src)})
same  => n,NoOp(CDR-DST: ${CDR(dst)})
same  => n,NoOp(CDR-DCONTEXT: ${CDR(dcontext)})
same  => n,NoOp(CDR-CHANNEL: ${CDR(channel)})
same  => n,NoOp(CDR-DSTCHANNEL: ${CDR(dstchannel)})
same  => n,NoOp(CDR-LASTAPP: ${CDR(lastapp)})
same  => n,NoOp(CDR-LASTDATA: ${CDR(lastdata)})
same  => n,NoOp(CDR-START: ${CDR(start)})
same  => n,NoOp(CDR-ANSWER: ${CDR(answer)})
same  => n,NoOp(CDR-END: ${CDR(end)})
same  => n,NoOp(CDR-DURATION: ${CDR(duration)})
same  => n,NoOp(CDR-BILLSEC: ${CDR(billsec)})
same  => n,NoOp(CDR-DISPOSITION: ${CDR(disposition)})
same  => n,NoOp(CDR-AMAFLAGS: ${CDR(amaflags)})
same  => n,NoOp(CDR-ACCOUNTCODE: ${CDR(accountcode)})
same  => n,NoOp(CDR-UNIQUEID: ${CDR(uniqueid)})
same  => n,NoOp(CDR-USERFIELD: ${CDR(userfield)})
same  => n,MacroExit()


Lo único que si tratamos de ver los valores antes de realizar el Dial() habrá campos que estén vacios o sean incorrectos(duración de la llamada, etc). Si realizo una llamada entre 2 extensiones puedo ver algo de este estilo:

 Executing [s@macro-dial-one:49] Macro("SIP/1002-0000006d", "dialout-one-predial-hook,") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:1] NoOp("SIP/1002-0000006d", "CDR-CLID: "Miguel" <1002>") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:2] NoOp("SIP/1002-0000006d", "CDR-SRC: 1002") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:3] NoOp("SIP/1002-0000006d", "CDR-DST: 1008") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:4] NoOp("SIP/1002-0000006d", "CDR-DCONTEXT: from-internal") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:5] NoOp("SIP/1002-0000006d", "CDR-CHANNEL: SIP/1002-0000006d") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:6] NoOp("SIP/1002-0000006d", "CDR-DSTCHANNEL: ") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:7] NoOp("SIP/1002-0000006d", "CDR-LASTAPP: NoOp") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:8] NoOp("SIP/1002-0000006d", "CDR-LASTDATA: CDR-LASTAPP: NoOp") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:9] NoOp("SIP/1002-0000006d", "CDR-START: 2017-06-21 10:21:53") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:10] NoOp("SIP/1002-0000006d", "CDR-ANSWER: ") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:11] NoOp("SIP/1002-0000006d", "CDR-END: ") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:12] NoOp("SIP/1002-0000006d", "CDR-DURATION: 0") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:13] NoOp("SIP/1002-0000006d", "CDR-BILLSEC: 0") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:14] NoOp("SIP/1002-0000006d", "CDR-DISPOSITION: NO ANSWER") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:15] NoOp("SIP/1002-0000006d", "CDR-AMAFLAGS: DOCUMENTATION") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:16] NoOp("SIP/1002-0000006d", "CDR-ACCOUNTCODE: ") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:17] NoOp("SIP/1002-0000006d", "CDR-UNIQUEID: 1498033313.203") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:18] NoOp("SIP/1002-0000006d", "CDR-USERFIELD: ") in new stack
    -- Executing [s@macro-dialout-one-predial-hook:19] MacroExit("SIP/1002-0000006d", "") in new stack
    -- Executing [s@macro-dial-one:50] ExecIf("SIP/1002-0000006d", "0?Set(D_OPTIONS=trII)") in new stack
    -- Executing [s@macro-dial-one:51] Dial("SIP/1002-0000006d", "SIP/1008,,TtrIb(func-apply-sipheaders^s^1)") in new stack


un saludo

Raúl Alexis Betancor Santana

unread,
Jun 21, 2017, 8:43:04 AM6/21/17
to aster...@googlegroups.com
De: "miguelsanzpardo" <miguels...@gmail.com>
Para: "asterisk-es" <aster...@googlegroups.com>
Enviados: Miércoles, 21 de Junio 2017 7:11:26
Asunto: [Asterisk-ES] Re: Ayuda con coredump generado por Asterisk
@Alfio
Hola, trataste de reparar y optimizar las bases de datos?
Puedes que tengas un error en alguna tabla y eso impide el arranque normal.

Hola Alfio, dispongo de un cluster activo-pasivo los cuales comparten varias carpetas:
- Las diferentes carpetas de Asterisk
- /var/lib/mysql
- /tftp

Cuando el servicio asterisk cayó el cliente hizo un "service heartbeat stop" en el nodo primario.
De tal manera conmmutó al secundario y los servicios: tftp, apache, mysql y asterisk fueron levantados sin ningún problema.
Supongo que si tuviera algún error no me debería de dejar arrancar de forma nommal la dB de mysql.

No es un problema de corrupción de la DB. 100% seguro


@Latino
Eso no debería de producir un core-dump de un cliente que está intentando hacer una consulta  ... petaría antes, al intentar conectar a la base de datos.

En mi caso diría que nadie ha tratado hacer una consulta desde la interfaz de reportes de Asterisk-FreePBX.
Por lo que hemos podido ver diría que:
- O el servicio mysql se ha caido, lo cual ha provocado que el servicio asterisk se haya caido tras ver que éste otro habia caido
Imposible, ya te lo he dicho, y lo puedes probar todas las veces que quieras ... levanta el Asterisk y luego tira el mysql ... simplemente Asterisk funcionará mal o no funcionará (todo depende de la dependencia de mysql que tengas), pero en ningún caso un core-dump.



- O el servicio asterisk no ha sido capaz de contactar con la dB de mysql(aunque ésta estuviera levantada) y después de varios intentos ha pensado que la
dB de mysql estaba caida y esto ha hecho caer al servicio asterisk

Nope, te hartarías a ver errors de "MySQL no available" en la consola de Asterisk y punto ... a partir de ahi, dependiendo de la dependencia que tengas de la mysql para el dialplan ... seguirá o no funcionando el asterisk, pero no cae y dumpea.

@Alfio
En la consola de asterisk puedes ver donde se muere? Es decir te muestra algo como que está subiendo y luego se detiene?
Si es así puedes compartir esa información.
Gracias de antemano.

En la consola de Asterisk no he podido ver nada porque no estaba conectado en ese momento.
Te adjunto el full.log.
La última llamada fue cursada en la hora 10:58 am, justo ahí pasó algo en mysql(cayó mysql o asterisk no fue capaz de establecer comunicación con mysql y esto provocó la caida del servicio asterisk)
Es un Mem-Leak de la ODBC de mysql ... ¿porqué usas ODBC en vez del conector directo de Asterisk a MySQL? ... los drivers de ODBC y MySQL en Linux, me han dado por culo más de una vez.

@Rodrigo
Hola,
La otra vez tuve un problema similar
https://blog.rodrigoramirez.com/crash-asterisk-cores/
La solución fue compilar desde las fuentes UnixODBC 2.3.4  y Asterisk
usando  --with-odbc

Hola Rodrigo, actualmente uso Debian 8.3, en teoría creo que solo existe hasta la versión 2.3.1 de UnixODBC para Debian 8.X, ya me confimarás
si es así, sino podrías pasarme las fuentes desde donde bajarlo? Cuando compilas Asterisk, odbc no funciona de forma correcta si no añades el
flag --with-odbc? Juraría que cuando compilé mi Asterisk no use ese flag(ni me quiere sonar que apareciera desde el menú de compilación)
Lo compilé con los flags que comentas en tu post:
- DONT_OPTIMIZE.
- DEBUG_THREADS
- BETTER_BACKTRACES
Y puede que con un flags más, tendría que revisarlo.
En Debian, si tienes instalada las dependencias de ODBC para devel ... el configura de Asterisk las detecta y te compila los módulos, no necesitas el --with-odbc, aunque tamoco está de más.

Raúl Alexis Betancor Santana

unread,
Jun 21, 2017, 8:44:54 AM6/21/17
to aster...@googlegroups.com
Sino me falla el cebollón ... también tienes las -postdial-hook y -trunk-postdial-hook  ... recuerdo haberlas usado alguna vez para generar las stats de QoS y MoS y guardarlas en el CDR.



De: "miguelsanzpardo" <miguels...@gmail.com>
Para: "asterisk-es" <aster...@googlegroups.com>
Enviados: Miércoles, 21 de Junio 2017 9:34:50
Asunto: [Asterisk-ES] Re: Ayuda con coredump generado por Asterisk
Ya he hecho pruebas con el FreePBX y se puede hacer algo de este estilo para poder ver los valores que tenemos antes de intentar guardar:

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)

Miguel Alberto Sanz Pardo

unread,
Jun 21, 2017, 9:51:25 AM6/21/17
to asterisk-es
@Latino

Es un Mem-Leak de la ODBC de mysql ... ¿porqué usas ODBC en vez del conector directo de Asterisk a MySQL? ... los drivers de ODBC y MySQL en Linux, me han dado por culo más de una vez.

Lo uso porque según leí en https://www.wikiasterisk.com/index.php/Registro_Llamadas_y_Eventos#Configuraci.C3.B3n_Bases_de_Datos entendí MySQL había entendido que PostgreSQL y MySQL se estaban quedando obsoletas y en su lugar se solían usar conectores ODBC. Pero si esto va a ser un inconveniente los deshabilito y tiro hacia MySQL directamente.
Donde uso ODBC si o si es en una instalación la cual usa Asterisk Realtime.
No se si usando MySQL directamente (sin usar ODBC de por medio) podré solucionar este problema, ojala.


@Latino

Sino me falla el cebollón ... también tienes las -postdial-hook y -trunk-postdial-hook  ... recuerdo haberlas usado alguna vez para generar las stats de QoS y MoS y guardarlas en el CDR.

He estado revisando y hay un contexto llamado "macro-hangupcall-custom", voy a probar a ver.
Para hacer la prueba que me comentas lo interesante sería ver la info. que se va a guardar en los CDR antes del Dial o después del Dial?

Raúl Alexis Betancor Santana

unread,
Jun 21, 2017, 11:48:18 AM6/21/17
to aster...@googlegroups.com
De: "miguelsanzpardo" <miguels...@gmail.com>
Para: "asterisk-es" <aster...@googlegroups.com>
Enviados: Miércoles, 21 de Junio 2017 14:51:24

Asunto: [Asterisk-ES] Re: Ayuda con coredump generado por Asterisk
@Latino

Es un Mem-Leak de la ODBC de mysql ... ¿porqué usas ODBC en vez del conector directo de Asterisk a MySQL? ... los drivers de ODBC y MySQL en Linux, me han dado por culo más de una vez.

Lo uso porque según leí en https://www.wikiasterisk.com/index.php/Registro_Llamadas_y_Eventos#Configuraci.C3.B3n_Bases_de_Datos entendí MySQL había entendido que PostgreSQL y MySQL se estaban quedando obsoletas y en su lugar se solían usar conectores ODBC. Pero si esto va a ser un inconveniente los deshabilito y tiro hacia MySQL directamente.
Donde uso ODBC si o si es en una instalación la cual usa Asterisk Realtime.
No se si usando MySQL directamente (sin usar ODBC de por medio) podré solucionar este problema, ojala.
Siempre que he tenido que lidiar con DB y Asterisk es usado los módulos nativos ... nada de ODBC, ya de digo, ODBC me ha dado por donde amargan los pepinos demasiadas veces como para considerarlo. Si lo tengo que usar ... será en último remedio.

Puedes usar Asterisk-Realtime sin problemas con los módulos nativos, para mi desgracia aún tengo que lidíar con algun que otro Asterisk que los tiene activos.


@Latino
Sino me falla el cebollón ... también tienes las -postdial-hook y -trunk-postdial-hook  ... recuerdo haberlas usado alguna vez para generar las stats de QoS y MoS y guardarlas en el CDR.

He estado revisando y hay un contexto llamado "macro-hangupcall-custom", voy a probar a ver.
Para hacer la prueba que me comentas lo interesante sería ver la info. que se va a guardar en los CDR antes del Dial o después del Dial?
Después de la llamada, pero antes de guardar el CDR.

Miguel Alberto Sanz Pardo

unread,
Jun 22, 2017, 11:10:12 AM6/22/17
to asterisk-es
Por ahora he deshabilitado el módulo cdr_adaptive_odbc.so y estoy guardando los CDR en .csv (cdr_csv.so ) y la centralita no ha vuelto a caer.

Estoy haciendo pruebas en el laboratorio con un backup que tengo de la centralita real. Los pasos que estoy siguiendo son estos:

1º) Actualizar mi Debian a la última revisión
# apt-get update
# apt-get upgrade
Tenía un Debian 8.3 y ahora tengo un Debian 8.8, no se si merecerá la pena pasar al Debian 9.X o si sería algo muy engorroso con respecto a todo el sistema que ya tengo montado (asterisk+mysql+apache+drbd+heartbeat)

2º) Actualizar el conector ODBC (Aunque al final acabe usando el conector de mysql directamente):

Según el  repositorio de Debian 8.X:
# dpkg -l | grep '^i' | grep odbc
ii  libmyodbc:amd64                    5.1.10-3                           amd64        the MySQL ODBC driver
ii  libodbc1:amd64                     2.3.1-3                            amd64        ODBC library for Unix
ii  odbcinst                           2.3.1-3                            amd64        Helper program for accessing odbc ini files
ii  odbcinst1debian2:amd64             2.3.1-3                            amd64        Support library for accessing odbc ini files
ii  unixodbc                           2.3.1-3                            amd64        Basic ODBC tools
ii  unixodbc-dev                       2.3.1-3                            amd64        ODBC libraries for UNIX (development files)

Según el repositorio de Debian 9.X
ii  libodbc1:amd64                     2.3.4-1                            amd64        ODBC library for Unix
ii  odbcinst                           2.3.4-1                            amd64        Helper program for accessing odbc ini files
ii  odbcinst1debian2:amd64             2.3.4-1                            amd64        Support library for accessing odbc ini files

Actualmente:

# odbcinst --version
unixODBC 2.3.1

# odbc_config --version
2.3.1

Desde el repositorio oficial no se puede actualizar más, pero si descargo el tarball sí que puedo:
# wget http://www.unixodbc.org/unixODBC-2.3.4.tar.gz
# gunzip unixODBC-2.3.4.tar.gz
# tar xvf unixODBC-2.3.4.tar
# ./configure --sysconfdir=/etc
# make
# make install

En tal caso
# odbcinst --version
unixODBC 2.3.4

# odbc_config --version
2.3.4

No se si esto podría hacer a mi sistema inestable, ya que desde el repositorio oficial la última versión es la 2.3.1 y no la 2.3.4


3º) Compilar de nuevo Asterisk con la libreria cdr_mysql.so (la cual actualmente esta deprecated)

4º) Con respecto a los módulos de CDR activar tan solo el módulo cdr_mysql y probar que todo funcione de manera correcta

En mysql, además de la database "asteriskcdrdb" dispongo de otra database llamada "asterisk"; entiendo que si desactivo todos los módulos asociados a odbc, postgre y sqlite y tan solo activo los módulos asociados a mysql(cdr_mysql.so y res_config_mysql.so) no debería tener ningún problema para acceder a ambas bases de datos, ¿Estoy en lo cierto?


Miguel Alberto Sanz Pardo

unread,
Jul 12, 2017, 6:47:27 AM7/12/17
to asterisk-es
Desde que realicé los cambios (Actualizar Debian a la revisión 8.8, recompilar Asterisk a la versión 11.25.1 y dejar de usar ODBC) el sistema sigue sin caer, llevo dos semanas con el sistema funcionando,  la tercera semana será la semana clave, ya que antes caia cada 3 semanas.

Ahora mismo al realizarse una llamada cuando se efectúa el colgado voy viendo esta info. por los logs:
C-00000001] pbx.c:     -- Executing [h@macro-dial-one:1] Macro("SIP/1002-00000002", "hangupcall,") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:1] NoOp("SIP/1002-00000002", "CDR-CLID: "Miguel" <1002>") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:2] NoOp("SIP/1002-00000002", "CDR-SRC: 1002") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:3] NoOp("SIP/1002-00000002", "CDR-DST: 1004") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:4] NoOp("SIP/1002-00000002", "CDR-DCONTEXT: from-internal") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:5] NoOp("SIP/1002-00000002", "CDR-CHANNEL: SIP/1002-00000002") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:6] NoOp("SIP/1002-00000002", "CDR-DSTCHANNEL: SIP/1004-00000003") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:7] NoOp("SIP/1002-00000002", "CDR-LASTAPP: Dial") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:8] NoOp("SIP/1002-00000002", "CDR-LASTDATA: SIP/1004,,TtrkKI") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:9] NoOp("SIP/1002-00000002", "CDR-START: 2017-07-12 12:43:20") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:10] NoOp("SIP/1002-00000002", "CDR-ANSWER: 2017-07-12 12:43:22") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:11] NoOp("SIP/1002-00000002", "CDR-END: ") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:12] NoOp("SIP/1002-00000002", "CDR-DURATION: 3") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:13] NoOp("SIP/1002-00000002", "CDR-BILLSEC: 1") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:14] NoOp("SIP/1002-00000002", "CDR-DISPOSITION: ANSWERED") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:15] NoOp("SIP/1002-00000002", "CDR-AMAFLAGS: DOCUMENTATION") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:16] NoOp("SIP/1002-00000002", "CDR-ACCOUNTCODE: ") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:17] NoOp("SIP/1002-00000002", "CDR-UNIQUEID: 1499856200.2") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:18] NoOp("SIP/1002-00000002", "CDR-USERFIELD: ") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:19] ExecIf("SIP/1002-00000002", "0?Set(CDR(recordingfile)=.wav)") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Executing [s@macro-hangupcall:20] GotoIf("SIP/1002-00000002", "1?theend") in new stack
[2017-07-12 12:43:24] VERBOSE[12396][C-00000001] pbx.c:     -- Goto (macro-hangupcall,s,22)



Os mantengo informados, esperemos que la semana que viene y posteriores el sistema siga estable.



un saludo y gracias por vuestra colaboración

Fernando Villares

unread,
Jul 12, 2017, 10:15:24 AM7/12/17
to aster...@googlegroups.com
la clave no es cada 3 semanas sino cada x cantidad de eventos ...seguro llegando al limite de file descriptors o similar

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es+unsubscribe@googlegroups.com.

Miguel Alberto Sanz Pardo

unread,
Jul 13, 2017, 3:18:19 AM7/13/17
to asterisk-es
Lo extraño es que cada día reinicio el servicio asterisk con un cron(a las 5.30 am), por lo cual el contador de fd es reiniciado.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.

Miguel Alberto Sanz Pardo

unread,
Jul 13, 2017, 3:32:43 AM7/13/17
to asterisk-es
Dispongo un script sencillo de este estilo que se ejecuta cada 30 min.

#! /bin/bash
# --------------------------------------------------------------------------------------------------
#   ARCHIVO DE OBTENCION DE ESTADISTICAS ASTERISK (LIMPIEZA)
# --------------------------------------------------------------------------------------------------

FECHA=$(date)
INFO1=$(sudo ls /proc/`pidof asterisk`/fd/* -l |wc -l)
INFO2=$(ls /proc/`pidof asterisk`/fd/* -l | grep timerfd |wc -l)
echo >> /tmp/FD.txt
echo "$FECHA" >>/tmp/FD.txt
echo "$INFO1" >>/tmp/FD.txt
echo "$INFO2" >>/tmp/FD.txt


Por ejemplo:
...

jue jul 13 04:00:01 CEST 2017
598
49

jue jul 13 04:30:01 CEST 2017
599
49

jue jul 13 05:00:01 CEST 2017
599
49

jue jul 13 05:30:01 CEST 2017
599
49

jue jul 13 06:00:01 CEST 2017
454
2

jue jul 13 06:30:01 CEST 2017
460
3

jue jul 13 07:00:01 CEST 2017
454
1

jue jul 13 07:30:01 CEST 2017
455
1

jue jul 13 08:00:01 CEST 2017
495
11

jue jul 13 08:30:01 CEST 2017
498
11

jue jul 13 09:00:01 CEST 2017
571
33

jue jul 13 09:30:01 CEST 2017
547
24
...
Reply all
Reply to author
Forward
0 new messages