[DragonFlyBSD - Bug #3193] (Closed) assertion: z->z_NFree > 0 in _slaballoc

bugtracker-admin at leaf.dragonflybsd.org bugtracker-admin at leaf.dragonflybsd.org
Sat Apr 18 16:14:45 PDT 2020


Issue #3193 has been updated by tse.

Status changed from New to Closed

----------------------------------------
Bug #3193: assertion: z->z_NFree > 0 in _slaballoc
http://bugs.dragonflybsd.org/issues/3193#change-13878

* Author: tse
* Status: Closed
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
----------------------------------------
I'm getting "assertion: z->z_NFree > 0 in _slaballoc" when malloc'ing
memory in a second thread it happens on the 31st or 32nd malloc

Kernel is DragonFly v5.4.2-RELEASE

As it stands, the code requires jack and midi to be setup, but I could try
and reduce it to a simpler test case if that's helpful

And if it's in any-way helpful, it looks roughly like this:

// size enough to store frames of input, dynamically updatable by jack
_Atomic size_t buf_size;
// ring of pointers to bufs for jack to copy data into
#define ringBufs_MAX 24
struct Recording*ringBufs[ringBufs_MAX];
_Atomic uint32_t ringBufs_dirty, ringBufs_clean; // positions in ring

int ringBuf_fill(void*data) {
struct Data*d = (struct Data*)data;
SDL_SetThreadPriority(SDL_THREAD_PRIORITY_NORMAL);
while(true) {
// could change to a cond-var
while((d->ringBufs_dirty+1)%ringBufs_MAX ==
atomic_load(&d->ringBufs_clean)) {}
d->buf_size = atomic_load(&d->buf_size);
d->ringBufs[d->ringBufs_dirty] = malloc(d->buf_size);
atomic_store(&d->ringBufs_dirty, (d->ringBufs_dirty+1)%ringBufs_MAX); } }



-- 
You have received this notification because you have either subscribed to it, or are involved in it.
To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account


More information about the Bugs mailing list