Skip to content

Commit

Permalink
musl: allocator: Fix __THROW and mallinfo
Browse files Browse the repository at this point in the history
  • Loading branch information
klzgrad committed Jan 14, 2025
1 parent 0b16ee5 commit 4789d4f
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,12 @@ void PartitionAllocMallocInitOnce() {
return;
}

#if PA_BUILDFLAG(IS_LINUX) || PA_BUILDFLAG(IS_CHROMEOS)
#if defined(__MUSL__)
// Musl calls malloc() in pthread_atfork(), resulting in a deadlock.
static_cast<void>(BeforeForkInParent);
static_cast<void>(AfterForkInParent);
static_cast<void>(AfterForkInChild);
#elif PA_BUILDFLAG(IS_LINUX) || PA_BUILDFLAG(IS_CHROMEOS)
// When fork() is called, only the current thread continues to execute in the
// child process. If the lock is held, but *not* by this thread when fork() is
// called, we have a deadlock.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -739,7 +739,9 @@ SHIM_ALWAYS_EXPORT int mallopt(int cmd, int value) __THROW {

#endif // !PA_BUILDFLAG(IS_APPLE) && !PA_BUILDFLAG(IS_ANDROID)

#if PA_BUILDFLAG(IS_LINUX) || PA_BUILDFLAG(IS_CHROMEOS)
#if defined(__MUSL__)
// Musl does not support struct mallinfo.
#elif PA_BUILDFLAG(IS_LINUX) || PA_BUILDFLAG(IS_CHROMEOS)
SHIM_ALWAYS_EXPORT struct mallinfo mallinfo(void) __THROW {
partition_alloc::SimplePartitionStatsDumper allocator_dumper;
Allocator()->DumpStats("malloc", true, &allocator_dumper);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@

#if defined(__GNUC__)

#if PA_BUILDFLAG(IS_POSIX)
#if defined(__MUSL__)
// Musl does not provide sys/cdefs.h
#elif PA_BUILDFLAG(IS_POSIX)
#include <sys/cdefs.h> // for __THROW
#endif

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@

#include "partition_alloc/shim/allocator_shim_internals.h"

// Musl does not specify anything for malloc() etc.
#if defined(__MUSL__)
#undef __THROW
#define __THROW
#endif

extern "C" {

// WARNING: Whenever a new function is added there (which, surprisingly enough,
Expand Down

0 comments on commit 4789d4f

Please sign in to comment.