Lubomir Rintel 30ced281cd pcm: avoid calling pcm_hw->close() twice
It would result in a double free:

  $ tinyplay example.wav
  failed to open for pcm 0,0
  *** glibc detected *** ./utils/tinyplay: double free or corruption (fasttop): 0x402dc258 ***
  Aborted
  $

The crash happens here:

  Program received signal SIGABRT, Aborted.
  0x40070e78 in raise () from /lib/libc.so.6
  Missing separate debuginfos, use: debuginfo-install glibc-2.16-34.olpc.0.fc18.armv7hl libgcc-4.7.2-8.fc18.armv7hl
  (gdb) bt
  #0  0x40070e78 in raise () from /lib/libc.so.6
  #1  0x400724b8 in abort () from /lib/libc.so.6
  #2  0x400ad6e0 in ?? () from /lib/libc.so.6
  #3  0x400b54e8 in ?? () from /lib/libc.so.6
  #4  0x2a00486c in pcm_hw_close ()
  #5  0x2a0032e0 in pcm_close ()
  #6  0x2a0016b0 in ctx_init ()
  #7  0x2a000c98 in main ()
  (gdb)

The previous free was done here:

  Breakpoint 1, 0x400b8b8c in free () from /lib/libc.so.6
  (gdb) bt
  #0  0x400b8b8c in free () from /lib/libc.so.6
  #1  0x2a00486c in pcm_hw_close ()
  #2  0x2a003674 in pcm_open ()
  #3  0x2a0015e8 in ctx_init ()
  #4  0x2a000c98 in main ()
  (gdb)
2020-04-10 09:12:03 +02:00
2017-05-23 21:23:57 -07:00
2016-12-04 13:28:15 -08:00
2020-02-22 15:23:59 -05:00
2020-02-27 07:15:45 -05:00
2017-10-12 20:09:05 -04:00
2018-12-17 14:56:53 +00:00
2016-10-01 23:00:28 -04:00
2016-11-29 11:47:27 -08:00

TinyALSA

Build Status

TinyALSA is a small library to interface with ALSA in the Linux kernel.

The aims are:

  • Provide a basic pcm and mixer API.
  • If it's not absolutely needed, don't add it to the API.
  • Avoid supporting complex and unnecessary operations, that could be dealt with at a higher level.
  • Provide comprehensive documentation.

Building

TinyALSA uses Makefile as the primary build system.

To build and install with Make, run the commands:

make
sudo make install
sudo ldconfig

Installing

TinyALSA is now available as a set of the following debian packages from launchpad:

Package Name: Description:
tinyalsa Contains tinyplay, tinycap, tinymix and tinypcminfo
libtinyalsa Contains the shared library
libtinyalsa-dev Contains the static library and header files

To install these packages, run the commands:

sudo apt-add-repository ppa:taylorcholberton/tinyalsa
sudo apt-get update
sudo apt-get install tinyalsa
sudo apt-get install libtinyalsa-dev

Documentation

Once installed, the man pages are available via:

man tinyplay
man tinycap
man tinymix
man tinypcminfo
man libtinyalsa-pcm
man libtinyalsa-mixer
S
Description
Third-party open-source software tinyalsa | 三方开源软件tinyalsa
Readme 1.1 MiB
Languages
C 77.3%
C++ 14.9%
Roff 2.1%
Shell 1.9%
Makefile 1.6%
Other 2.2%