Well, yesterday I did some testing and got a rather interesting result. I put: fprintf(stderr, "pcm->last_size %d, size %d, pcm->frame_size %d\n", pcm->last_size, size, pcm->frame_size); were that assert was (yes, I know this makes the plugin unusable for normal use). The output consisted of several lines, starting with one with pcm->last_size = 16380, next was pcm->last_size = 24320, reduced by 256 on each subsequent line, up to the line that triggered assert: pcm->last_size 0, size 64, pcm->frame_size 4 Now, all of this happened during alcOpenDevice(NULL);, when there's no sound input/output yet. If I simply drop the line with assert, everything seems to work correctly. Now, does this this mean that the bug lies in openal or is this a problem with the plugin (or even alsa-lib) ?