Menu

#385 Segfault in remote mode when LOADing HTTPS/ICY stream on ARM (Raspberry Pi)

1.33.x
closed-fixed
nobody
None
5
2026-05-19
2026-04-02
No

Description:

mpg123 crashes with a segfault when using LOAD with an HTTPS webradio URL in remote mode (-R) on ARM (Raspberry Pi). The crash occurs in generic_sendstr() when attempting to print the ICY-NAME metadata. The issue reproduces on both 1.32.10 and 1.33.4.

Environment:

Platform: Raspberry Pi (armhf, arm-linux-gnueabihf)
OS: Raspbian Buster (Debian 10)
mpg123 versions tested: 1.32.10 and 1.33.4 (compiled from source)
GDB: Raspbian 8.2.1-2
Configure flags: ./configure --with-audio=alsa --enable-static --disable-shared
Binary is fully statically linked against libmpg123 (confirmed via ldd)

Steps to reproduce:

# Terminal 1
mpg123 -R --fifo /tmp/mpg123-fifo.cmd

# Terminal 2
echo "LOAD https://jazzradio.ice.infomaniak.ch/jazzradio-high" > /tmp/mpg123-fifo.cmd

Observed behavior:
mpg123 outputs @I jazzradio-high then immediately segfaults.
Backtrace (1.33.4):

gdb --args /usr/local/bin/mpg123 -R --fifo /tmp/mpg123-fifo.cmd 
    Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
@R MPG123 (ThOr) v11
[Detaching after fork from child process 23855]
[Detaching after fork from child process 23856]
@I jazzradio-high

Program received signal SIGSEGV, Segmentation fault.
0x76fbc24c in strlen () from /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so
(gdb) bt full
#0  0x76fbc24c in strlen () from /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so
No symbol table info available.
#1  0x000200a0 in utf8outstr (dest_=dest_@entry=0x7efff13c, source=0xb <error: Cannot access memory at address 0xb>, source@entry=0xbec68 "", to_terminal=to_terminal@entry=1)
    at src/local.c:290
        dest = 0x0
        width = 0
        source_fill = <optimized out>
#2  0x00020db4 in outstr (dest=0x7efff13c, dest@entry=0x7efff124, str=str@entry=0xbec68 "", is_utf8=is_utf8@entry=1, is_term=1) at src/local.c:449
        ret = 0
        usrc = <optimized out>
#3  0x00017fec in generic_sendstr (is_utf8=is_utf8@entry=1, fmt=fmt@entry=0x8d688 "I ICY-NAME: %s", str=0xb <error: Cannot access memory at address 0xb>) at src/control_generic.c:81
        ap = {__ap = 0x7efff14c}
        outbuf = 0x0
#4  0x00018638 in generic_load (state=1, arg=<optimized out>, fr=<optimized out>) at src/control_generic.c:333
No locals.
#5  generic_load (fr=<optimized out>, arg=<optimized out>, state=1) at src/control_generic.c:311
No locals.
#6  0x00019ca8 in control_generic (fr=0x1) at src/control_generic.c:929
        toksave = 0x7efff293 ""
        len = 0
        comstr = <optimized out>
        cmd = 0x7efff258 "LOAD"
        arg = 0x7efff25d "https://jazzradio.ice.infomaniak.ch/jazzradio-high"
        counter = <optimized out>
        next_comstr = 0x7efff294 ""
        tv = {tv_sec = 0, tv_usec = 0}
        fds = {__fds_bits = {8, 0 <repeats 31 times>}}
        n = <optimized out>
        alive = <optimized out>
        silent = <optimized out>
        __func__ = "control_generic"
        buf = "LOAD\000https://jazzradio.ice.infomaniak.ch/jazzradio-high\000mp3", '\000' <repeats 149 times>...
        last_len = 0
#7  0x000139c4 in main (sys_argc=<optimized out>, sys_argv=<optimized out>) at src/mpg123.c:1309
        ret = <optimized out>
        result = 0
        end_of_files = 0 '\000'
        parr = 8421440
        fname = <optimized out>
        libpar = 10
        mp = <optimized out>
        pl_utf8 = 0
        start_time = {tv_sec = 1000, tv_usec = 1996476672}
        __func__ = "main"
        stderr_width = 2130705400
        stdin_width = <optimized out>
        term_ctrl_default = 1
(gdb)

Analysis:

The crash happens at src/control_generic.c:333:

if(filept->htd.icy_name.fill) generic_sendstr(1, "I ICY-NAME: %s", filept->htd.icy_name.p);

The guard icy_name.fill passes (non-zero), but icy_name.p is 0xb — a corrupted pointer, not NULL and not a valid address. This suggests the mpg_string struct is getting corrupted upstream, likely during the HTTPS network helper fork/handoff (two "Detaching after fork from child process" messages are visible before the crash).

The issue may be ARM-specific. I have not yet tested whether HTTP (non-TLS) streams also crash.

Discussion

1 2 > >> (Page 1 of 2)
  • Thomas Orgis

    Thomas Orgis - 2026-04-02

    I cannot reproduce on AMD64. Is this specific to remote control mode or does plain

    mpg123 https://jazzradio.ice.infomaniak.ch/jazzradio-high
    

    also crash? It also prints the ICY info for me … though it is not very informative:

     src/mpg123 https://jazzradio.ice.infomaniak.ch/jazzradio-high
    High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.33.5-dev; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes
    
    Directory: https://jazzradio.ice.infomaniak.ch/
    
    Terminal control enabled, press 'h' for listing of keys and functions.
    
    Playing MPEG stream 1 of 1: jazzradio-high ...
    ICY-NAME: JAZZ RADIO NATIONALE
    ICY-URL: https://jazzradio.ice.infomaniak.ch/jazzradio-high.mp3
    
    MPEG 1.0 L III cbr192 44100 j-s
    
    ICY-META: StreamTitle='';
    
     
  • Thomas Orgis

    Thomas Orgis - 2026-04-02

    Next step would be to check if a stream capture (--streamdump file) that is then opened with correct --icy-interval from disk also crashes. This isolates things from the actual HTTP process. Of course, the history of the corrupted string struct would be good

     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-03

    Environment

    - Platform: armv7l (Raspberry Pi, Raspbian Buster/Debian 10)

    1. The problem only occurs in remote mode; plain mode works fine

    Plain mode plays the stream without issue:

    mpg123 https://jazzradio.ice.infomaniak.ch/jazzradio-high
    

    Remote mode crashes:

    # Terminal 1
    mpg123 -R --fifo /tmp/mpg123-fifo.cmd
    
    # Terminal 2
    echo "LOAD https://jazzradio.ice.infomaniak.ch/jazzradio-high" > /tmp/mpg123-fifo.cmd
    

    Output before crash:

    @I jazzradio-high
    Segmentation fault.
    

    2. Stream capture replayed with correct --icy-interval from disk does NOT crash

    Captured the raw stream using curl (since mpg123 crashes in remote mode before completing a dump):

    mpg123 --streamdump /tmp/mpg123-streamdump https://streaming.nrjaudio.fm/oumvmk8fnozc?origine=fluxurlradio
    

    Confirmed the ICY metadata interval:

    $ curl -sL -H "Icy-MetaData: 1" -D /tmp/icy-headers.txt \
      "https://jazzradio.ice.infomaniak.ch/jazzradio-high"
    $ grep -i icy-metaint /tmp/icy-headers.txt
    

    Result: icy-metaint: 16000

    Replayed in remote mode:

    gdb --args /usr/local/bin/mpg123 -R --fifo /tmp/mpg123-fifo.cmd --icy-interval 16000
    (gdb) run
    
    # From another terminal
    echo "LOAD /tmp/mpg123-streamdump" > /tmp/mpg123-fifo.cmd
    

    This played back successfully with no crash.


    3. History of the corrupted string struct

    Set a watchpoint on filept->htd.icy_name.p and a breakpoint on generic_load:

    gdb --args /usr/local/bin/mpg123 -R --fifo /tmp/mpg123-fifo.cmd
    (gdb) break generic_load
    (gdb) run
    

    Sent the LOAD command from another terminal. On first breakpoint hit (entry to generic_load), filept is still NULL as expected. Continued, and after the two fork detaches the watchpoint triggered:

    (gdb) break generic_load
    Breakpoint 1 at 0x18458: generic_load. (2 locations)
    (gdb) run
    Starting program: /usr/local/bin/mpg123 -R --fifo /tmp/mpg123-fifo.cmd
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
    @R MPG123 (ThOr) v11
    
    Breakpoint 1, generic_load (fr=0xbec68, arg=0x7efff27d "https://jazzradio.ice.infomaniak.ch/jazzradio-high", state=1) at src/control_generic.c:313
    313             sendstat_disabled = FALSE;
    (gdb) bt full
    #0  generic_load (fr=0xbec68, arg=0x7efff27d "https://jazzradio.ice.infomaniak.ch/jazzradio-high", state=1) at src/control_generic.c:313
    No locals.
    #1  0x00019ca8 in control_generic (fr=0x1) at src/control_generic.c:929
            toksave = 0x7efff2af ""
            len = 0
            comstr = <optimized out>
            cmd = 0x7efff278 "LOAD"
            arg = 0x7efff27d "https://jazzradio.ice.infomaniak.ch/jazzradio-high"
            counter = <optimized out>
            next_comstr = 0x7efff2b0 ""
            tv = {tv_sec = 0, tv_usec = 0}
            fds = {__fds_bits = {8, 0 <repeats 31 times>}}
            n = <optimized out>
            alive = <optimized out>
            silent = <optimized out>
            __func__ = "control_generic"
            buf = "LOAD\000https://jazzradio.ice.infomaniak.ch/jazzradio-high", '\000' <repeats 153 times>...
            last_len = 0
    #2  0x000139c4 in main (sys_argc=<optimized out>, sys_argv=<optimized out>) at src/mpg123.c:1309
            ret = <optimized out>
            result = 0
            end_of_files = 0 '\000'
            parr = 8421440
            fname = <optimized out>
            libpar = 10
            mp = <optimized out>
            pl_utf8 = 0
            start_time = {tv_sec = 1000, tv_usec = 1996476672}
            __func__ = "main"
            stderr_width = 2130705432
            stdin_width = <optimized out>
            term_ctrl_default = 1
    (gdb) print *filept
    Cannot access memory at address 0x0
    (gdb) print filept->htd
    Cannot access memory at address 0x10c
    (gdb) continue
    Continuing.
    [Detaching after fork from child process 16736]
    [Detaching after fork from child process 16737]
    
    Breakpoint 1, generic_load (state=1, arg=0x7efff27d "https://jazzradio.ice.infomaniak.ch/jazzradio-high", fr=0xbec68) at src/control_generic.c:326
    326             mpg123_seek(fr, 0, SEEK_SET); /* This finds ID3v2 at beginning. */
    (gdb) bt full
    #0  generic_load (state=1, arg=0x7efff27d "https://jazzradio.ice.infomaniak.ch/jazzradio-high", fr=0xbec68) at src/control_generic.c:326
    No locals.
    #1  generic_load (fr=0xbec68, arg=0x7efff27d "https://jazzradio.ice.infomaniak.ch/jazzradio-high", state=1) at src/control_generic.c:311
    No locals.
    #2  0x00019ca8 in control_generic (fr=0x1) at src/control_generic.c:929
            toksave = 0x7efff2af ""
            len = 0
            comstr = <optimized out>
            cmd = 0x7efff278 "LOAD"
            arg = 0x7efff27d "https://jazzradio.ice.infomaniak.ch/jazzradio-high"
            counter = <optimized out>
            next_comstr = 0x7efff2b0 ""
            tv = {tv_sec = 0, tv_usec = 0}
            fds = {__fds_bits = {8, 0 <repeats 31 times>}}
            n = <optimized out>
            alive = <optimized out>
            silent = <optimized out>
            __func__ = "control_generic"
            buf = "LOAD\000https://jazzradio.ice.infomaniak.ch/jazzradio-high", '\000' <repeats 153 times>...
            last_len = 0
    #3  0x000139c4 in main (sys_argc=<optimized out>, sys_argv=<optimized out>) at src/mpg123.c:1309
            ret = <optimized out>
            result = 0
            end_of_files = 0 '\000'
            parr = 8421440
            fname = <optimized out>
            libpar = 10
            mp = <optimized out>
            pl_utf8 = 0
            start_time = {tv_sec = 1000, tv_usec = 1996476672}
            __func__ = "main"
            stderr_width = 2130705432
            stdin_width = <optimized out>
            term_ctrl_default = 1
    (gdb) print *filept
    $1 = {
      buf = "\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type, Icy-MetaData\r\nAccess-Control-Allow-Methods: GET, OPTIONS, SOURCE, PUT, HEAD, STATS\r\nicy-"..., bufp = 0xd34f1 "\377\373\262d\017\210\026\021f\315Gi\340\002Z\244\312\f\354\024", fill = 39, fd = -1, htd = {content_type = {p = 0x0, size = 819024,
          fill = 11}, icy_name = {p = 0xb <error: Cannot access memory at address 0xb>, size = 866256, fill = 21}, icy_url = {p = 0x15 <error: Cannot access memory at address 0x15>,
          size = 867776, fill = 55}, icy_interval = 55, proxyhost = {p = 0x0, size = 16000, fill = 0}, proxyport = {p = 0x0, size = 0, fill = 0}, proxystate = PROXY_UNKNOWN}, nh = 0x0}
    (gdb) print filept->htd
    $2 = {content_type = {p = 0x0, size = 819024, fill = 11}, icy_name = {p = 0xb <error: Cannot access memory at address 0xb>, size = 866256, fill = 21}, icy_url = {
        p = 0x15 <error: Cannot access memory at address 0x15>, size = 867776, fill = 55}, icy_interval = 55, proxyhost = {p = 0x0, size = 16000, fill = 0}, proxyport = {p = 0x0, size = 0,
        fill = 0}, proxystate = PROXY_UNKNOWN}
    (gdb)
    
     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-13

    Hello again !

    new update, just tested mpg123 1.31.2, and it is working better, i tryed to use different versions after i have experienced more problems in remote mode (@JUMP -1, not being able to see the frames @F)

    i had problems on v1.33.4 and v1.32.10. but using 1.31.2 solves most of them

     

    Last edit: abdelaziz sbaai 2026-04-13
  • Thomas Orgis

    Thomas Orgis - 2026-04-15

    I somehow missed your first response with the streamdump playback check and the gdb logs. I'll have to look at the more closely.

     
  • Thomas Orgis

    Thomas Orgis - 2026-04-15

    Can you check if a non-https stream using the old internal http code in mpg123 crashes? ./configure --with-network=internal

    You got the hunch already, that something in the https helper handling is causing memory corruption.

     
  • Thomas Orgis

    Thomas Orgis - 2026-04-16

    But that does not make sense: You are using the same helper code with 1.31.x (btw.: 1.31.3 is also fine? Are you able to bisect things? So if it is the change from 1.31.x to 1.32.0, we got broadly revisions 5191 to 5333 to check in trunk. Would be helpful to narrow it down to one of those commits. If you are missing tooling for svn (I'd just do a simple shell script, but some folks are very used to git tools), you could use the github mirror https://github.com/madebr/mpg123 or just the plain git-svn conversion at https://mpg123.org/trunk/.git The relevant commits then are

    commit ebdd0b62a6be527a74fbb54330c0d332082fb720
    Author: thor <thor@35dc7657-300d-0410-a2e5-dc2837fedb53>
    Date:   Sun Oct 23 19:29:11 2022 +0000
    
        NEWS: redordering
    
        git-svn-id: svn://scm.orgis.org/mpg123/trunk@5191 35dc7657-300d-0410-a2e5-dc2837fedb53
    

    and

    commit aff67e9ae4d81c9b85eaebd9d9edf8cde6b1ea87
    Author: thor <thor@35dc7657-300d-0410-a2e5-dc2837fedb53>
    Date:   Tue Sep 19 22:46:42 2023 +0000
    
        version script with selective setting
    
        git-svn-id: svn://scm.orgis.org/mpg123/trunk@5333 35dc7657-300d-0410-a2e5-dc2837fedb53
    
     
  • Thomas Orgis

    Thomas Orgis - 2026-04-16

    The whole data structure is fishy …

    (gdb) print *filept
    $1 = {
      buf = "\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type, Icy-MetaData\r\nAccess-Control-Allow-Methods: GET, OPTIONS, SOURCE, PUT, HEAD, STATS\r\nicy-"...,
      bufp = 0xd34f1 "\377\373\262d\017\210\026\021f\315Gi\340\002Z\244\312\f\354\024",
      fill = 39,
      fd = -1, htd = {
        content_type = {p = 0x0, size = 819024, fill = 11},
        icy_name = {p = 0xb <error: Cannot access memory at address 0xb>, size = 866256, fill = 21},
        icy_url = {p = 0x15 <error: Cannot access memory at address 0x15>,
          size = 867776, fill = 55},
          icy_interval = 55,
          proxyhost = {p = 0x0, size = 16000, fill = 0}, proxyport = {p = 0x0, size = 0, fill = 0}, proxystate = PROXY_UNKNOWN}, nh = 0x0
        }
    

    OK, I'm not sure about the getline buffer state right now. Maybe that is even ok, as the lines have been gotten. But it is clear that the icy_name and icy_url structs are off. Also, both about a MiB in size, with a fill of a few dozen bytes. That is not right. That far you figured out already … I have trouble envisioning how forking off should cause this corruption, especially since mpg123 1.31.x does the same forking.

    So, some bisecting to the actual revision change that triggers this would be cool.

     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-20

    Hello again !
    yes i have tried ./configure --with-network=internal as well as the other options for --with-network (curl, wget), none of them solved the problem

     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-20

    i have tryed to bisect to find where the problme occurs exactly, here are the results of the different versions i have tried

    Version Works ?
    1.33.4 No
    1.32.9 No
    1.32.3 No
    1.32.0 No
    1.31.4 Yes
    1.31.2 Yes
    aff67e9a (commit) No
    ebdd0b62 (commit) Yes

    So as you guessed, the problem comes from the change from 1.31.x to 1.32.0,

    I have noticed another non related problem, the frames don't work in remote mode in the impacted versions

    #commit aff67e9a
    /home/dev/mpg123.aff67e9a/usr/local/bin/mpg123 -R
    @R MPG123 (ThOr) v11
    L /var/tmp/musics/songs/311736715.mp3
    @I 311736715
    @P 2
    @S 1.0 3 44100 Joint-Stereo 0 1044 2 0 0 0 320 0 0
    @E Error getting position information, disabling playback status.
    
    #commit ebdd0b62
    /home/dev/mpg123.ebdd0b62/usr/local/bin/mpg123 -R
    @R MPG123 (ThOr) v10
    L /var/tmp/musics/songs/311736715.mp3
    @I 311736715
    @P 2
    @S 1.0 3 44100 Joint-Stereo 0 1044 2 0 0 0 320 0 0
    @F 0 6935 0.00 181.16
    @F 0 6935 0.00 181.16
    @F 1 6934 0.03 181.13
    @F 2 6933 0.05 181.11
    @F 3 6932 0.08 181.08
    @F 4 6931 0.10 181.05
    @F 5 6930 0.13 181.03
    

    I hope this helps, tell me if you have any questions

     

    Last edit: abdelaziz sbaai 2026-04-20
  • Thomas Orgis

    Thomas Orgis - 2026-04-20

    I don't think that failure to get position information is unrelated. The network backend does not matter, apparently. So it is something in the main process, triggered by that stream … but only if it is really live, not read from a dump. Some memory corruption. Also only in remote control mode …

    Since you have the infra set up for testing differing versions. Can you check the commits/revisions between in a bisecting fashion (always taking the middle revision between the currently known-good and currently known-bad one)? If we got a change to pin down, a hunch about the actual mechanism of corruption here could emerge.

     
  • Thomas Orgis

    Thomas Orgis - 2026-04-20

    Wait, what? The failure to get position information is while playing a local file? That should be super-easy to debug! (Sorry, I'm not fully able to pay attention here.)

    Does building with -fsanitize=address give anything? Or ubsan?

    This can be nicely scripted for bisecting the error. Also … valgrind and/or gdb should be able to pin down something.

     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-21

    Hello again,

    i tryed to git bisect, but i ended up skipping many commits because of compilation errors i couldn't fix, so this is the "narrowed down" list of commits where the problem could've happened

    There are only 'skip'ped commits left to test.
    The first bad commit could be any of:
    2b353cb4e049794243ced9213ce59fe7dff6d96d
    3172d2ef48ec160a1101582ffbb1b47a84c54343
    05d0d723b8726fcb10da92c3660c4d91cdea3202
    68f648a58347365dbc34ae9f2c3f497d34f0ceef
    2b687d071562c0306b08bf6f066b364ca06cf402
    515829134b6e3a7bb980b6ba2b4755f6c93f75f0
    97cdf7374e1572ed48a58c19f0c96b1571b51aa9
    db2618ed6671f8349e59f744b67de0cfb352d9ba
    919490161be0a63e2d25d908c0df177c58a34dc2
    f932afa16051a39d63ff035c26e1cb039f980065
    51895359a73757a462cf3aae061eecce854433fa
    78567ca46ed2c27f0122d638b48fbda3afcb2a67
    e1e6aa201a88d9d7f91c806b71270dd0013c6ca6
    f286baa845301ef05affca5dcce403193366a529
    8758d32028ae8cef25203149485c2c985b5e798d
    f9c3408816210ea8a1f63a291309b65bc60bad5f
    1fde6632f07e8310ba145e5c38248f336d3c3a68
    23500f3a89f78bfd4284f0009c6ecfc1e19fa4f0
    bb3d506871596ebe4b54227363f3f1ccbdaf1f5c
    We cannot bisect more!
    

    is it normal to have compilation errors in some of these commits ?
    errors raged from simpler errors like this one

    ./src/intsym.h:245:23: error: conflicting types for INT123_position_info
     #define position_info INT123_position_info
                           ^~~~~~~~~~~~~~~~~~~~
    src/common.c:164:5: note: in expansion of macro position_info
     int position_info( mpg123_handle *fr, long offset, out123_handle *ao
         ^~~~~~~~~~~~~
    ./src/intsym.h:245:23: note: previous declaration of INT123_position_info was here
     #define position_info INT123_position_info
                           ^~~~~~~~~~~~~~~~~~~~
    src/common.h:32:5: note: in expansion of macro position_info
     int position_info( mpg123_handle *, off_t, out123_handle *,  off_t *, off_t *, double *, double *, double *, double *);
         ^~~~~~~~~~~~~
    make: *** [Makefile:4071: src/common.o] Error 1
    

    to complicated errors like

    src/libmpg123/mpg123.h:136:46: error: conflicting types for mpg123_decode_frame_64
     #define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame)
                                                  ^~~~~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:136:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:130:17: note: in expansion of macro mpg123_decode_frame
     int NATIVE_NAME(mpg123_decode_frame)(mpg123_handle *mh, lfs_alias_t *num, unsigned char **audio, size_t *bytes);
                     ^~~~~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:136:46: note: previous declaration of mpg123_decode_frame_64 was here
     #define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame)
                                                  ^~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:136:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:879:19: note: in expansion of macro mpg123_decode_frame
     MPG123_EXPORT int mpg123_decode_frame( mpg123_handle *mh
                       ^~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:135:53: error: conflicting types for mpg123_framebyframe_decode_64
     #define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode)
                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:135:36: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode)
                                        ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:136:17: note: in expansion of macro mpg123_framebyframe_decode
     int NATIVE_NAME(mpg123_framebyframe_decode)(mpg123_handle *mh, lfs_alias_t *num, unsigned char **audio, size_t *bytes);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:135:53: note: previous declaration of mpg123_framebyframe_decode_64 was here
     #define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode)
                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:135:36: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode)
                                        ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:891:19: note: in expansion of macro mpg123_framebyframe_decode
     MPG123_EXPORT int mpg123_framebyframe_decode( mpg123_handle *mh
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:152:42: error: conflicting types for mpg123_framepos_64
     #define mpg123_framepos MPG123_LARGENAME(mpg123_framepos)
                                              ^~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:152:25: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_framepos MPG123_LARGENAME(mpg123_framepos)
                             ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:142:25: note: in expansion of macro mpg123_framepos
     lfs_alias_t NATIVE_NAME(mpg123_framepos)(mpg123_handle *mh);
                             ^~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:152:42: note: previous declaration of mpg123_framepos_64 was here
     #define mpg123_framepos MPG123_LARGENAME(mpg123_framepos)
                                              ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:152:25: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_framepos MPG123_LARGENAME(mpg123_framepos)
                             ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:927:21: note: in expansion of macro mpg123_framepos
     MPG123_EXPORT off_t mpg123_framepos(mpg123_handle *mh);
                         ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:137:46: error: conflicting types for mpg123_tell_64
     #define mpg123_tell         MPG123_LARGENAME(mpg123_tell)
                                                  ^~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:137:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_tell         MPG123_LARGENAME(mpg123_tell)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:148:25: note: in expansion of macro mpg123_tell
     lfs_alias_t NATIVE_NAME(mpg123_tell)(mpg123_handle *mh);
                             ^~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:137:46: note: previous declaration of mpg123_tell_64 was here
     #define mpg123_tell         MPG123_LARGENAME(mpg123_tell)
                                                  ^~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:137:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_tell         MPG123_LARGENAME(mpg123_tell)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:979:21: note: in expansion of macro mpg123_tell
     MPG123_EXPORT off_t mpg123_tell(mpg123_handle *mh);
                         ^~~~~~~~~~~
    src/libmpg123/mpg123.h:138:46: error: conflicting types for mpg123_tellframe_64
     #define mpg123_tellframe    MPG123_LARGENAME(mpg123_tellframe)
                                                  ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:138:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_tellframe    MPG123_LARGENAME(mpg123_tellframe)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:154:25: note: in expansion of macro mpg123_tellframe
     lfs_alias_t NATIVE_NAME(mpg123_tellframe)(mpg123_handle *mh);
                             ^~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:138:46: note: previous declaration of mpg123_tellframe_64 was here
     #define mpg123_tellframe    MPG123_LARGENAME(mpg123_tellframe)
                                                  ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:138:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_tellframe    MPG123_LARGENAME(mpg123_tellframe)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:985:21: note: in expansion of macro mpg123_tellframe
     MPG123_EXPORT off_t mpg123_tellframe(mpg123_handle *mh);
                         ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:139:46: error: conflicting types for mpg123_tell_stream_64
     #define mpg123_tell_stream  MPG123_LARGENAME(mpg123_tell_stream)
                                                  ^~~~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:139:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_tell_stream  MPG123_LARGENAME(mpg123_tell_stream)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:160:25: note: in expansion of macro mpg123_tell_stream
     lfs_alias_t NATIVE_NAME(mpg123_tell_stream)(mpg123_handle *mh);
                             ^~~~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:139:46: note: previous declaration of mpg123_tell_stream_64 was here
     #define mpg123_tell_stream  MPG123_LARGENAME(mpg123_tell_stream)
                                                  ^~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:139:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_tell_stream  MPG123_LARGENAME(mpg123_tell_stream)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:991:21: note: in expansion of macro mpg123_tell_stream
     MPG123_EXPORT off_t mpg123_tell_stream(mpg123_handle *mh);
                         ^~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:140:46: error: conflicting types for mpg123_seek_64
     #define mpg123_seek         MPG123_LARGENAME(mpg123_seek)
                                                  ^~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:140:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_seek         MPG123_LARGENAME(mpg123_seek)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:166:25: note: in expansion of macro mpg123_seek
     lfs_alias_t NATIVE_NAME(mpg123_seek)(mpg123_handle *mh, lfs_alias_t sampleoff, int whence);
                             ^~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:140:46: note: previous declaration of mpg123_seek_64 was here
     #define mpg123_seek         MPG123_LARGENAME(mpg123_seek)
                                                  ^~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:140:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_seek         MPG123_LARGENAME(mpg123_seek)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1000:21: note: in expansion of macro mpg123_seek
     MPG123_EXPORT off_t mpg123_seek( mpg123_handle *mh
                         ^~~~~~~~~~~
    src/libmpg123/mpg123.h:141:46: error: conflicting types for mpg123_feedseek_64
     #define mpg123_feedseek     MPG123_LARGENAME(mpg123_feedseek)
                                                  ^~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:141:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_feedseek     MPG123_LARGENAME(mpg123_feedseek)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:172:25: note: in expansion of macro mpg123_feedseek
     lfs_alias_t NATIVE_NAME(mpg123_feedseek)(mpg123_handle *mh, lfs_alias_t sampleoff, int whence, lfs_alias_t *input_offset);
                             ^~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:141:46: note: previous declaration of mpg123_feedseek_64 was here
     #define mpg123_feedseek     MPG123_LARGENAME(mpg123_feedseek)
                                                  ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:141:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_feedseek     MPG123_LARGENAME(mpg123_feedseek)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1013:21: note: in expansion of macro mpg123_feedseek
     MPG123_EXPORT off_t mpg123_feedseek( mpg123_handle *mh
                         ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:142:46: error: conflicting types for mpg123_seek_frame_64
     #define mpg123_seek_frame   MPG123_LARGENAME(mpg123_seek_frame)
                                                  ^~~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:142:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_seek_frame   MPG123_LARGENAME(mpg123_seek_frame)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:178:25: note: in expansion of macro mpg123_seek_frame
     lfs_alias_t NATIVE_NAME(mpg123_seek_frame)(mpg123_handle *mh, lfs_alias_t frameoff, int whence);
                             ^~~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:142:46: note: previous declaration of mpg123_seek_frame_64 was here
     #define mpg123_seek_frame   MPG123_LARGENAME(mpg123_seek_frame)
                                                  ^~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:142:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_seek_frame   MPG123_LARGENAME(mpg123_seek_frame)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1022:21: note: in expansion of macro mpg123_seek_frame
     MPG123_EXPORT off_t mpg123_seek_frame( mpg123_handle *mh
                         ^~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:143:46: error: conflicting types for mpg123_timeframe_64
     #define mpg123_timeframe    MPG123_LARGENAME(mpg123_timeframe)
                                                  ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:143:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_timeframe    MPG123_LARGENAME(mpg123_timeframe)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:184:25: note: in expansion of macro mpg123_timeframe
     lfs_alias_t NATIVE_NAME(mpg123_timeframe)(mpg123_handle *mh, double sec);
                             ^~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:143:46: note: previous declaration of mpg123_timeframe_64 was here
     #define mpg123_timeframe    MPG123_LARGENAME(mpg123_timeframe)
                                                  ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:143:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_timeframe    MPG123_LARGENAME(mpg123_timeframe)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1028:21: note: in expansion of macro mpg123_timeframe
     MPG123_EXPORT off_t mpg123_timeframe(mpg123_handle *mh, double sec);
                         ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:144:46: error: conflicting types for mpg123_index_64
     #define mpg123_index        MPG123_LARGENAME(mpg123_index)
                                                  ^~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:144:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_index        MPG123_LARGENAME(mpg123_index)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:190:17: note: in expansion of macro mpg123_index
     int NATIVE_NAME(mpg123_index)(mpg123_handle *mh, lfs_alias_t **offsets, lfs_alias_t *step, size_t *fill);
                     ^~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:144:46: note: previous declaration of mpg123_index_64 was here
     #define mpg123_index        MPG123_LARGENAME(mpg123_index)
                                                  ^~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:144:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_index        MPG123_LARGENAME(mpg123_index)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1039:19: note: in expansion of macro mpg123_index
     MPG123_EXPORT int mpg123_index( mpg123_handle *mh
                       ^~~~~~~~~~~~
    src/libmpg123/mpg123.h:145:46: error: conflicting types for mpg123_set_index_64
     #define mpg123_set_index    MPG123_LARGENAME(mpg123_set_index)
                                                  ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:145:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_set_index    MPG123_LARGENAME(mpg123_set_index)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:196:17: note: in expansion of macro mpg123_set_index
     int NATIVE_NAME(mpg123_set_index)(mpg123_handle *mh, lfs_alias_t *offsets, lfs_alias_t step, size_t fill);
                     ^~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:145:46: note: previous declaration of mpg123_set_index_64 was here
     #define mpg123_set_index    MPG123_LARGENAME(mpg123_set_index)
                                                  ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:145:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_set_index    MPG123_LARGENAME(mpg123_set_index)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1051:19: note: in expansion of macro mpg123_set_index
     MPG123_EXPORT int mpg123_set_index( mpg123_handle *mh
                       ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:146:46: error: conflicting types for mpg123_position_64
     #define mpg123_position     MPG123_LARGENAME(mpg123_position)
                                                  ^~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:146:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_position     MPG123_LARGENAME(mpg123_position)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:202:17: note: in expansion of macro mpg123_position
     int NATIVE_NAME(mpg123_position)( mpg123_handle *mh, lfs_alias_t frame_offset, lfs_alias_t buffered_bytes, lfs_alias_t *current_frame, lfs_alias_t *frames_left, double *current_seconds, double *seconds_left);
                     ^~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:146:46: note: previous declaration of mpg123_position_64 was here
     #define mpg123_position     MPG123_LARGENAME(mpg123_position)
                                                  ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:146:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_position     MPG123_LARGENAME(mpg123_position)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1061:19: note: in expansion of macro mpg123_position
     MPG123_EXPORT int mpg123_position( mpg123_handle *mh, off_t frame_offset, off_t buffered_bytes, off_t *current_frame, off_t *frames_left, double *current_seconds, double *seconds_left);
                       ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:148:46: error: conflicting types for mpg123_framelength_64
     #define mpg123_framelength  MPG123_LARGENAME(mpg123_framelength)
                                                  ^~~~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:148:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_framelength  MPG123_LARGENAME(mpg123_framelength)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:208:25: note: in expansion of macro mpg123_framelength
     lfs_alias_t NATIVE_NAME(mpg123_framelength)(mpg123_handle *mh);
                             ^~~~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:148:46: note: previous declaration of mpg123_framelength_64 was here
     #define mpg123_framelength  MPG123_LARGENAME(mpg123_framelength)
                                                  ^~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:148:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_framelength  MPG123_LARGENAME(mpg123_framelength)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1356:21: note: in expansion of macro mpg123_framelength
     MPG123_EXPORT off_t mpg123_framelength(mpg123_handle *mh);
                         ^~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:147:46: error: conflicting types for mpg123_length_64
     #define mpg123_length       MPG123_LARGENAME(mpg123_length)
                                                  ^~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:147:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_length       MPG123_LARGENAME(mpg123_length)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:214:25: note: in expansion of macro mpg123_length
     lfs_alias_t NATIVE_NAME(mpg123_length)(mpg123_handle *mh);
                             ^~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:147:46: note: previous declaration of mpg123_length_64 was here
     #define mpg123_length       MPG123_LARGENAME(mpg123_length)
                                                  ^~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:147:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_length       MPG123_LARGENAME(mpg123_length)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1370:21: note: in expansion of macro mpg123_length
     MPG123_EXPORT off_t mpg123_length(mpg123_handle *mh);
                         ^~~~~~~~~~~~~
    src/libmpg123/mpg123.h:149:46: error: conflicting types for mpg123_set_filesize_64
     #define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize)
                                                  ^~~~~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:149:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:220:17: note: in expansion of macro mpg123_set_filesize
     int NATIVE_NAME(mpg123_set_filesize)(mpg123_handle *mh, lfs_alias_t size);
                     ^~~~~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:149:46: note: previous declaration of mpg123_set_filesize_64 was here
     #define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize)
                                                  ^~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:149:29: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize)
                                 ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:1378:19: note: in expansion of macro mpg123_set_filesize
     MPG123_EXPORT int mpg123_set_filesize(mpg123_handle *mh, off_t size);
                       ^~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:150:48: error: conflicting types for mpg123_replace_reader_64
     #define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader)
                                                    ^~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:150:31: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader)
                                   ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:226:17: note: in expansion of macro mpg123_replace_reader
     int NATIVE_NAME(mpg123_replace_reader)(mpg123_handle *mh, mpg123_ssize_t (*r_read) (int, void *, size_t), lfs_alias_t (*r_lseek)(int, lfs_alias_t, int));
                     ^~~~~~~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:150:48: note: previous declaration of mpg123_replace_reader_64 was here
     #define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader)
                                                    ^~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:150:31: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader)
                                   ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:2015:19: note: in expansion of macro mpg123_replace_reader
     MPG123_EXPORT int mpg123_replace_reader( mpg123_handle *mh
                       ^~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:151:55: error: conflicting types for mpg123_replace_reader_handle_64
     #define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle)
                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:61:27: note: in definition of macro NATIVE_NAME
     #define NATIVE_NAME(func) func
                               ^~~~
    src/libmpg123/mpg123.h:125:31: note: in expansion of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
                                   ^~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:151:38: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle)
                                          ^~~~~~~~~~~~~~~~
    src/libmpg123/lfs_alias.c:232:17: note: in expansion of macro mpg123_replace_reader_handle
     int NATIVE_NAME(mpg123_replace_reader_handle)(mpg123_handle *mh, mpg123_ssize_t (*r_read) (void *, void *, size_t), lfs_alias_t (*r_lseek)(void *, lfs_alias_t, int), void (*cleanup)(void*));
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from src/libmpg123/lfs_alias.c:38:
    src/libmpg123/mpg123.h:151:55: note: previous declaration of mpg123_replace_reader_handle_64 was here
     #define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle)
                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:124:38: note: in definition of macro MPG123_MACROCAT_REALLY
     #define MPG123_MACROCAT_REALLY(a, b) a ## b
                                          ^
    src/libmpg123/mpg123.h:129:32: note: in expansion of macro MPG123_MACROCAT
     #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
                                    ^~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:151:38: note: in expansion of macro MPG123_LARGENAME
     #define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle)
                                          ^~~~~~~~~~~~~~~~
    src/libmpg123/mpg123.h:2038:19: note: in expansion of macro mpg123_replace_reader_handle
     MPG123_EXPORT int mpg123_replace_reader_handle( mpg123_handle *mh
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    make: *** [Makefile:4228: src/libmpg123/libmpg123_la-lfs_alias.lo] Error 1
    
     
  • Thomas Orgis

    Thomas Orgis - 2026-04-21

    There is something else going on. At least on x86-64, I can build all of those 19 commits just fine.

    What jumps out is this one:

    commit 3172d2ef48ec160a1101582ffbb1b47a84c54343
    Author: thor <thor@35dc7657-300d-0410-a2e5-dc2837fedb53>
    Date:   Sun May 28 19:26:58 2023 +0000
    
        mpg123: patch up remote control interface esp. with buffer and fix some casing
    
        Buffering and generic remote control did not interact nicely before. Now I added
        some explicit draining and dropping to make sense.
    
        This means that, on track input end, there is a phase of draining the output buffer
        that you cannot interrupt with a command. Decide between quick control or stable
        playback. Seamless buffered track transitions are not really in the picture. That
        would need more invasive changes in the control logic.
    
        A re-implementation of the mpg123 player with differing interfaces would improve
        on that behaviour. We're carrying the tradition of some decades of hacks here.
    
    
    
    
        git-svn-id: svn://scm.orgis.org/mpg123/trunk@5291 35dc7657-300d-0410-a2e5-dc2837fedb53
    

    You do not use buffering, do you? But still, this did touch remote control mode.

    The other candidate for bigger changes is

    commit bb3d506871596ebe4b54227363f3f1ccbdaf1f5c
    Author: thor <thor@35dc7657-300d-0410-a2e5-dc2837fedb53>
    Date:   Mon Aug 21 09:07:08 2023 +0000
    
        libmpg123: purge off_t out of the core, offer 64 bit portable API (bug 344)
    
    git-svn-id: svn://scm.orgis.org/mpg123/trunk@5304 35dc7657-300d-0410-a2e5-dc2837fedb53
    

    But this is neither specific to ARM, nor does it really touch the remote control interface.

    If you could try again to build rev 5291 (commit 3172d2ef48ec160a1101582ffbb1b47a84c54343) and the one before that from a clean checkout … that might be the one. What I did:

    n=0; for c in $(cat commits); do n=$((n+1)); dir=$(printf %02d $n)-$c; rm -rf $dir; (mkdir $dir && cd trunk && git checkout $c && autoreconf -iv && cd ../$dir && ../trunk/configure --disable-shared && make -j5) 2>&1  |tee $dir.log; done
    

    This resulted in 19 working builds for me. I normally try to keep trunk commits building.

     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-22

    new update ! i have succeded to compile and run all the previous commits, and problematic versions usings when i tryed this configure option to avoid compilation problems on some commits: --disable-largefile

    the hint was this make error

    ./src/intsym.h:245:23: error: conflicting types for INT123_position_info
     #define position_info INT123_position_info
                           ^~~~~~~~~~~~~~~~~~~~
    src/common.c:164:5: note: in expansion of macro position_info
     int position_info( mpg123_handle *fr, long offset, out123_handle *ao
         ^~~~~~~~~~~~~
    ./src/intsym.h:245:23: note: previous declaration of INT123_position_info was here
     #define position_info INT123_position_info
                           ^~~~~~~~~~~~~~~~~~~~
    src/common.h:32:5: note: in expansion of macro position_info
     int position_info( mpg123_handle *, off_t, out123_handle *,  off_t *, off_t *, double *, double *, double *, double *);
         ^~~~~~~~~~~~~
    make: *** [Makefile:4071: src/common.o] Error 1
    

    but i only had it while compiling some commits when i was bisecting

     
  • Thomas Orgis

    Thomas Orgis - 2026-04-23
     
  • Thomas Orgis

    Thomas Orgis - 2026-04-23

    So you built all those commits and they ran fine without crashing?

    Is the current mpg123 also fine with --disable-largefile?

     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-23

    yes, i tested mpg123 1.33.4, and it works just fine

    isn't this what this doc file describes ?

    https://github.com/madebr/mpg123/blob/master/doc/LARGEFILE

     
  • Thomas Orgis

    Thomas Orgis - 2026-04-23
     
  • Thomas Orgis

    Thomas Orgis - 2026-04-23

    Damn. So you see a corruption issue based on the largefile stuff, which YET AGAIN needs fixing. Hm. Did I break something with the 64 bit API in control_generic.c for 32 bit platforms? Maybe I can reproduce this after all, here.

    Can you attach the full configure output / config.log from a normal run of current mpg123 without the --disable-largefile?

     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-23

    yes, here it is

     
  • Thomas Orgis

    Thomas Orgis - 2026-04-24
     
  • Thomas Orgis

    Thomas Orgis - 2026-04-24

    I see the issue with broken position reporting on i686 with largefile:

    $ LD_LIBRARY_PATH=/usr/i686-linux-gnu/lib src/mpg123 -R
    @R MPG123 (ThOr) v11
    LOAD https://jazzradio.ice.infomaniak.ch/jazzradio-high
    @I jazzradio-high
    @I ICY-NAME: JAZZ RADIO NATIONALE
    @I ICY-URL: https://jazzradio.ice.infomaniak.ch/jazzradio-high.mp3
    @P 2
    @S 1.0 3 44100 Joint-Stereo 2 627 2 0 0 0 192 0 0
    @E Error getting position information, disabling playback status.
    @I ICY-META: StreamTitle='';
    quit
    

    No crash, but at least an effect. Damn. I again broke something while touching the offset bit mess. This is a really horrible lesson to learn over two decades: If you touch largefile support stuff with 32 or 64 bit offsets, you will get hurt!

    PS: Asan doesn't have an issue, though. But there is an issue.
    PPS: sf.net: cut that crap about considering me a spambot!

     
  • abdelaziz sbaai

    abdelaziz sbaai - 2026-04-24

    great that you now have a better understading of the bug.

    Would you advise i use v1.31.x or v1.33.4 with --disable-largefile ? i'll probably not be playing files larger that 500MB in the worst case scenarios, i'm still wondering if that changes anything in how https streams work

    let me know if you want me to test any new commits/patches ;)

    thank you for being this reactive !

     
  • Thomas Orgis

    Thomas Orgis - 2026-04-24

    Can you test current trunk? I found inconsistent largefile usage in control_generic.c. It switched on large offsets too late, after including headers that defined the types.

    This is serious breakage and I am appalled that no tooling threw a warning about that. This is another stark highlight on why it is really really really really a bad idea to have the size of off_t depend on a preprocessor macro. I'm working on this for … dunno … 15 years at least now? … and and still get things wrong every single time I have to introduce changes into the machinery to handle this mess.

    Anyhow, I really hope current trunk works for you and I can release the bugfix, also for the 1.32 series in distros.

    Thanks for spotting the mess.

     
1 2 > >> (Page 1 of 2)

Log in to post a comment.