Create bugfix for asterisk's libjack implementation
$250-750 USD
Pago na entrega
Overview:
---------------
Asterisk comes with an libjack implementation to support access to the phone calls' audio streams. The jack impementation is realized as dialplan applications/functions within asterisk; they will create two "jack ports" (virtual audio devices), when activated. There are two different ways of usage: as audio hook (JACK_HOOK()) for only the outgoing audio during a phone call, this way the outgoing audio stream can be intercepted and manipulated/filtered. The other way (JACK()), and that is the way we make use of it, is to have one virtual audio port for incoming and one for outgoing audio. Other software tools which implement libjack can then read from or write to these virtual devices.
Problem description:
--------------------
I) The jack implementation in asterisk seems to be faulty or broken
During our first tests we've noticed problems specially related to the ringbuffer; After a short period of time, all audio changed into white noise or disappeared at all. However, we've found a patch for this problem in the internet. This patch only tackles the problem as it "repairs" the ringbuffer and/or drops audio frames before there will be a serios "crash". The reason behind this issue is still unidentified.
II) We end up in segfaults as soon as asterisk handles some few calls in parallel.
Probably unrelated to the ringbuffer issue described above, there is still some kind of race condition or maybe a threading issue when starting calls in parallel. Asterisk crashes seemingly by random, we were not able to find out any reproducible situation that causes the crash. By compiling asterisk with disabled optimizations and enabled debug code, we were able to get a coredump. With gdb and its command "bt full", the backtrace shows that one jack function is expected to return a valid mem pointer (to the ringbuffer), but returns null. The next library (in this case libresample) raises the error. But the simpliest solution, to call this library only if the pointer is valid, did not help: the next coredump leads us to a totally different error position, but at least still related to jack.
Challenge:
----------
I) check whether asterisk and jack is correctly compiled and installed
II) Do all you need on the server to find out why asterisk crashes.
II) Provide a bugfix or any other solution as workaround that addresses
this problem
How we can help:
----------------
You will get full root access to the server and may install any public tools you need.
We will write a script that facilitates starting multiple test calls in parallel, to provoke the crash situation.
Please just ask, if you need any further information, help or assistance
related software
----------------
Asterisk (11.5.1) with libjack support
libjack-jackd2-0 (1.9.6~dfsg.1-2)
libresample (0.1.3-3)
Server: Linux version 2.6.32-5-amd64 (Debian 2.6.32-46)
(gcc version 4.3.5 (Debian 4.3.5-4))
related urls
------------
asterisk: [url removed, login to view]
libjack: [url removed, login to view]
files:
------
see backtrace #1 and #2,
the jack implementation source app_jack.c with its two fixes
ID do Projeto: #4927392
Sobre o projeto
4 freelancers estão ofertando em média $1814 nesse trabalho
hi. likly it fixable, but complexity is high. for some application you can try go other way(but that depend of application and have be discused)