Bug#786737: jackd1: crashes with -n option specified

2015-08-25 Thread Adrian Knoth

On 05/25/15 04:53, Frank Heckenbach wrote:


Package: jackd1
Version: 1:0.124.1+20140122git5013bed0-3
Severity: normal
Tags: upstream patch

When the "-n" option is given, jackd crashes when accessing
properties (which it seems to do implicitly for any client, e.g.
jack_lsp).


Forwarded to jack-devel@.

Thanks for both your report and the patch.


Cheers

___
pkg-multimedia-maintainers mailing list
pkg-multimedia-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-multimedia-maintainers


Bug#786737: jackd1: crashes with -n option specified

2015-05-24 Thread Frank Heckenbach
Package: jackd1
Version: 1:0.124.1+20140122git5013bed0-3
Severity: normal
Tags: upstream patch

When the "-n" option is given, jackd crashes when accessing
properties (which it seems to do implicitly for any client, e.g.
jack_lsp).

To reproduce:

  jackd -nfoo -dalsa
or
  JACK_DEFAULT_SERVER=bar jackd -nfoo -dalsa

While jackd is running, repeat this:

  JACK_DEFAULT_SERVER=foo jack_lsp

After a few tries, jackd crashes:

  /dev/shm/jack-0/default/__db.001: No such file or directory
  cannot open DB environment: No such file or directory
  Segmentation fault

I found several problems in the code:

- jack_property_init():

  Returns early if db_env != NULL. However, on failure later returns
  with db_env != NULL, but db == NULL. Callers assume db != NULL
  after it returns.

  Patch below. This fixes at least the segfault, but the error
  message remains (and whatever consequences it may have, I don't
  know).

- 7 places in metadata.c:

if (jack_property_init (NULL)) {

  If NULL is passed for server_name, of course it won't use the
  actual server name.

  How is this supposed to work at all? Was it ever tested?

  A fix should consist of passing the actual server name from the
  callers.

--- libjack/metadata.c
+++ libjack/metadata.c
@@ -45,11 +45,11 @@
 
 /* idempotent */
 
-if (db_env) {
+if (db) {
 return 0;
 }
 
-if ((ret = db_env_create(&db_env, 0)) != 0) { 
+if (!db_env && (ret = db_env_create(&db_env, 0)) != 0) {
 jack_error ("cannot initialize DB environment: %s\n", 
db_strerror(ret));
 return -1;
 } 

___
pkg-multimedia-maintainers mailing list
pkg-multimedia-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-multimedia-maintainers