Excellent! Lots. Mostly fixes of rare issues that it took me a while to
encounter enough times to feel compelled to fix. Mostly not stuff a casual
user would encounter. Some graphical/theme enhancements, performance
improvements, and a few workflow improvements. And that's just what I've
been working on lately. I have other half-finished projects (one that I
spent a lot of time on was a custom plugin UI designer thing)  and some
pretty extensive changes to NTK (HiDPI support [which helps with
ZynAddSubFX more than Non, but still helps]) that still require a lot of
work and I may not have the time to finish.

I have a few more workflow related things (in particular to do with
managing JACK connections) I would want to get done before I would feel
like it was a good package for a version number bumping release.

Publishing free software these days is a bit like feeding a tiger, so I
haven't had much motivation to publish. Someone will just take it, change
the name from "non" to "new", and pretend to have invented it themselves
(and the "community" will cheer them on).

I wrote this software in the first place to make music, and that's what
*I've* been up to. I shared it to save others from having to waste their
lives writing a DAW from scratch, but I didn't anticipate getting so much
negativity in return for my generosity.


On Sat, Jan 2, 2021 at 6:10 PM Aaron Duerksen <[email protected]>
wrote:

> Looks like that was it!  Thank you!
>
> You've gotten me curious though: what other changes do you have locally?
>
>
>
> ------------------------------
> *From:* J. Liles
> *Sent:* Saturday, January 02, 2021 3:48PM
> *To:* Non
> *Subject:* Re: [non] Segfault when deleting a control
>
> Oh, and yes, the github issue tracker had to be shut down due to continued
> harassment by Fillipe Coelho, Nils Hilbricht, and David Runge. I simply
> don't have time to waste moderating for trolls. Please direct any
> complaints to them. But anyway, the whole spirit of the github thing never
> really worked out. I can count the number of PRs I got on one finger. The
> rest was mostly reports of bugs that I either can't reproduce or have
> already fixed and people demanding that I implement things that would only
> be useful to them (and not to me or other users) and other such nonsense.
> In fact I think writing a patch should be easier than submitting a bug
> report and any effort spent making submitting bug reports easier just
> reduces the number of patches or at least well thought-out suggestions one
> receives. Time will tell.
>
>
> On Sat, Jan 2, 2021 at 1:34 PM J. Liles <[email protected]> wrote:
>
>> I've pushed what I believe to be the relevant fix to the tuxfamily repo
>> on the branch named "topic/fix-crash-on-module-removal".
>>
>> If you can confirm that it fixes your issue, I'll push it to master.
>>
>> I know for a fact that I don't experience this behavior, so I'm confident
>> it is already fixed, but if this wasn't the commit that fixed it then it's
>> probably not going to be easy for me to separate out and you'll just have
>> to wait until I push my private development (if I ever find the motivation
>> to do so).
>>
>> Or someone could send me a patch, of course, which might restore my faith
>> in the free software "community".
>>
>>
>>
>> On Sat, Jan 2, 2021 at 1:02 PM J. Liles <[email protected]> wrote:
>>
>>> It's a race condition where something in the process thread is not
>>> recognizing the lock taken when removing the module.
>>>
>>> I'm 99% this is already fixed in the version I run.
>>>
>>> I've got a lot of changes and fixes piled up locally. I'll see if I can
>>> dig this one out and push it since it seems to be troubling you.
>>>
>>> Been a bit discouraged with the Linux Audio/free software scene as of
>>> late, what with the fact that people give me demands rather than patches,
>>> and then proceed to rip off my work and slander me in public. It's hard to
>>> be interested in spending the time and effort it takes to publish changes
>>> (out of the goodness of my heart) when I know full well that all I'll
>>> receive in return is abuse.
>>>
>>>
>>> On Sat, Jan 2, 2021 at 12:29 PM Aaron Duerksen <[email protected]>
>>> wrote:
>>>
>>>> Well, I got *something* now, but I'm not entirely sure where to go from
>>>> here.
>>>>
>>>> The core dump is here:
>>>>
>>>> https://drive.google.com/file/d/1ywlMhK6GJRG5lRbGmg12-k04j9L4HJer/view?usp=sharing
>>>>
>>>> And here's the terminal log from that session, after recompiling with
>>>> debugging enabled:
>>>>
>>>>
>>>>
>>>> aaron@aaron-M6800:~$ non-mixer &
>>>> [2] 6332
>>>> aaron@aaron-M6800:~$ The Non-Mixer 1.2.0  -- Copyright (c) 2008-2013
>>>> Jonathan Moore Liles
>>>> [non-mixer] ../nonlib/OSC/Endpoint.C:202 init(): Creating OSC server
>>>> [non-mixer] ../mixer/src/Plugin_Module.C:257 discover_thread():
>>>> Discovering plugins in the background
>>>> WARNING: LADSPA_PATH environment variable not set
>>>>          Assuming /usr/lib/ladspa:/usr/local/lib/ladspa
>>>> OSC=osc.udp://aaron-M6800:16412/
>>>> [non-mixer] ../mixer/src/main.C:310 main(): Running UI...
>>>> [non-mixer] ../nonlib/OSC/Endpoint.C:1156 osc_thread(): OSC Thread
>>>> running
>>>> X_ChangeProperty: BadValue (integer parameter out of range for
>>>> operation) 0x0
>>>> WARNING: Could not open path /usr/local/lib/ladspa/
>>>> 10 plugins found in 5 libraries
>>>> WARNING: LADSPA_RDF_PATH environment variable not set
>>>>          Assuming /usr/share/ladspa/rdf:/usr/local/share/ladspa/rdf
>>>> WARNING: Could not open path /usr/local/share/ladspa/rdf/
>>>> gdb `which non-mixer` `pidof non-mixer`
>>>> GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2
>>>> Copyright (C) 2020 Free Software Foundation,
>>>> Inc.
>>>>
>>>> License GPLv3+: GNU GPL version 3 or later
>>>> <http://gnu.org/licenses/gpl.html> <http://gnu.org/licenses/gpl.html>
>>>> This is free software: you are free to change and redistribute it.
>>>> There is NO WARRANTY, to the extent permitted by law.
>>>> Type "show copying" and "show warranty" for details.
>>>> This GDB was configured as "x86_64-linux-gnu".
>>>> Type "show configuration" for configuration details.
>>>> For bug reporting instructions, please see:
>>>> <http://www.gnu.org/software/gdb/bugs/>
>>>> <http://www.gnu.org/software/gdb/bugs/>.
>>>> Find the GDB manual and other documentation resources online at:
>>>>     <http://www.gnu.org/software/gdb/documentation/>
>>>> <http://www.gnu.org/software/gdb/documentation/>.
>>>>
>>>> For help, type "help".
>>>> Type "apropos word" to search for commands related to "word"...
>>>> Reading symbols from /usr/local/bin/non-mixer...
>>>> Attaching to program: /usr/local/bin/non-mixer, process 6332
>>>> Could not attach to process.  If your uid matches the uid of the target
>>>> process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
>>>> again as the root user.  For more details, see
>>>> /etc/sysctl.d/10-ptrace.conf
>>>> ptrace: Operation not permitted.
>>>> /home/aaron/6332: No such file or directory.
>>>> (gdb) set logging on
>>>> Copying output to gdb.txt.
>>>> Copying debug output to gdb.txt.
>>>> (gdb) thread apply all bt full
>>>> (gdb) [non-mixer] ../mixer/src/Mixer.C:230 cb_menu(): Picked
>>>> &Mixer/&Add Strip
>>>> [non-mixer] ../mixer/src/Module.C:606 chain(): Module Controller
>>>> already belongs to chain NULL
>>>> Cannot lock down 82280346 byte memory area (Cannot allocate memory)
>>>> Cannot use real-time scheduling (RR/5)(1: Operation not permitted)
>>>> JackClient::AcquireSelfRealTime error
>>>> Cannot lock down 82280346 byte memory area (Cannot allocate memory)
>>>> [non-mixer] ../mixer/src/Chain.C:375 configure_ports():
>>>> required_buffers = 0
>>>> Cannot use real-time scheduling (RR/5)(1: Operation not permitted)
>>>> JackClient::AcquireSelfRealTime error
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module (null) in
>>>> to chain Unnamed
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module Controller
>>>> in to chain Unnamed
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module Controller
>>>> in to chain Unnamed
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module Controller
>>>> in to chain Unnamed
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module Meter
>>>> Indicator in to chain Unnamed
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module JACK in to
>>>> chain Unnamed
>>>> [non-mixer] ../nonlib/JACK/Port.C:193 activate(): Activating port name
>>>> in-1
>>>> [non-mixer] ../nonlib/JACK/Port.C:207 activate(): Port = 0x5
>>>> [non-mixer] ../mixer/src/Mixer.C:1155 auto_connect(): Full auto-connect
>>>> cycle
>>>> [non-mixer] ../mixer/src/Module.C:606 chain(): Module JACK already
>>>> belongs to chain Unnamed
>>>> [non-mixer] ../mixer/src/Mixer_Strip.C:440 handle_module_added():
>>>> Connecting controls to default module "JACK"
>>>> [non-mixer] ../mixer/src/Chain.C:375 configure_ports():
>>>> required_buffers = 1
>>>> [non-mixer] ../mixer/src/Chain.C:629 insert(): Module "JACK" has 0:1
>>>> audio and 2:0 control ports
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module Gain in to
>>>> chain Unnamed
>>>> [non-mixer] ../mixer/src/Module.C:606 chain(): Module Gain already
>>>> belongs to chain Unnamed
>>>> [non-mixer] ../mixer/src/Mixer_Strip.C:440 handle_module_added():
>>>> Connecting controls to default module "Gain"
>>>> [non-mixer] ../mixer/src/Chain.C:375 configure_ports():
>>>> required_buffers = 1
>>>> [non-mixer] ../mixer/src/Chain.C:629 insert(): Module "Gain" has 1:1
>>>> audio and 2:0 control ports
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module Meter in
>>>> to chain Unnamed
>>>> [non-mixer] ../mixer/src/Mixer_Strip.C:440 handle_module_added():
>>>> Connecting controls to default module "Meter"
>>>> [non-mixer] ../mixer/src/Chain.C:375 configure_ports():
>>>> required_buffers = 1
>>>> [non-mixer] ../mixer/src/Chain.C:629 insert(): Module "Meter" has 1:1
>>>> audio and 0:1 control ports
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module JACK in to
>>>> chain Unnamed
>>>> [non-mixer] ../mixer/src/Module.C:606 chain(): Module JACK already
>>>> belongs to chain Unnamed
>>>> [non-mixer] ../nonlib/JACK/Port.C:193 activate(): Activating port name
>>>> out-1
>>>> [non-mixer] ../nonlib/JACK/Port.C:207 activate(): Port = 0x6
>>>> [non-mixer] ../mixer/src/Mixer_Strip.C:440 handle_module_added():
>>>> Connecting controls to default module "JACK"
>>>> [non-mixer] ../mixer/src/Chain.C:375 configure_ports():
>>>> required_buffers = 1
>>>> [non-mixer] ../mixer/src/Chain.C:629 insert(): Module "JACK" has 1:0
>>>> audio and 2:0 control ports
>>>> [non-mixer] ../mixer/src/Chain.C:375 configure_ports():
>>>> required_buffers = 1
>>>> [non-mixer] ../mixer/src/Mixer.C:755 add(): Add mixer strip "Unnamed"
>>>> [non-mixer] ../mixer/src/Module.C:843 insert_menu_cb(): picked = Mono
>>>> Pan
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module Mono Pan
>>>> in to chain Unnamed
>>>> [non-mixer] ../nonlib/JACK/Port.C:193 activate(): Activating port name
>>>> out-2
>>>> [non-mixer] ../nonlib/JACK/Port.C:207 activate(): Port = 0x7
>>>> [non-mixer] ../mixer/src/Chain.C:375 configure_ports():
>>>> required_buffers = 2
>>>> [non-mixer] ../mixer/src/Chain.C:629 insert(): Module "Mono Pan" has
>>>> 1:2 audio and 1:0 control ports
>>>> [non-mixer] ../mixer/src/Module.C:1397 command_open_parameter_editor():
>>>> Opening module parameters for "Mono Pan"
>>>> [non-mixer] ../mixer/src/Module_Parameter_Editor.C:621 menu_cb(): Bind
>>>> [non-mixer] ../mixer/src/Module.C:595 chain(): Adding module Pan in to
>>>> chain Unnamed
>>>> [non-mixer] ../mixer/src/Chain.C:375 configure_ports():
>>>> required_buffers = 2
>>>> [non-mixer] ../mixer/src/Chain.C:308 remove(): Removing controller
>>>> module from chain
>>>> thread apply all bt full
>>>> (gdb) quit
>>>> [2]+  Segmentation fault      (core dumped) non-mixer
>>>> aaron@aaron-M6800:~$ gdb `which non-mixer` core
>>>> GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2
>>>> Copyright (C) 2020 Free Software Foundation,
>>>> Inc.
>>>>
>>>> License GPLv3+: GNU GPL version 3 or later
>>>> <http://gnu.org/licenses/gpl.html> <http://gnu.org/licenses/gpl.html>
>>>> This is free software: you are free to change and redistribute it.
>>>> There is NO WARRANTY, to the extent permitted by law.
>>>> Type "show copying" and "show warranty" for details.
>>>> This GDB was configured as "x86_64-linux-gnu".
>>>> Type "show configuration" for configuration details.
>>>> For bug reporting instructions, please see:
>>>> <http://www.gnu.org/software/gdb/bugs/>
>>>> <http://www.gnu.org/software/gdb/bugs/>.
>>>> Find the GDB manual and other documentation resources online at:
>>>>     <http://www.gnu.org/software/gdb/documentation/>
>>>> <http://www.gnu.org/software/gdb/documentation/>.
>>>>
>>>> For help, type "help".
>>>> Type "apropos word" to search for commands related to "word"...
>>>> Reading symbols from /usr/local/bin/non-mixer...
>>>> [New LWP 6362]
>>>> [New LWP 6332]
>>>> [New LWP 6334]
>>>> [New LWP 6361]
>>>> [New LWP 6360]
>>>> [Thread debugging using libthread_db enabled]
>>>> Using host libthread_db library
>>>> "/lib/x86_64-linux-gnu/libthread_db.so.1".
>>>> Core was generated by `non-mixer'.
>>>> Program terminated with signal SIGSEGV, Segmentation fault.
>>>> #0  0x00005562fe5421ff in Chain::process (this=0x5562ff9c0660,
>>>> nframes=1024) at ../mixer/src/Chain.C:906
>>>> 906             m->process( nframes );
>>>> [Current thread is 1 (Thread 0x7f1c023f4700 (LWP 6362))]
>>>> (gdb) quit
>>>> aaron@aaron-M6800:~$
>>>>
>>>>
>>>>
>>>> gdb.txt is present but still empty after all that.
>>>>
>>>>
>>>>
>>>> The seemingly relevant sections of code are Chain.C:308, which includes
>>>> the last debug message as I removed the control:
>>>>
>>>> void
>>>> Chain::remove ( Controller_Module *m )
>>>> {
>>>>     DMESSAGE( "Removing controller module from chain" );
>>>>
>>>>     client()->lock();
>>>>
>>>>     m->disconnect();
>>>>
>>>>     controls_pack->remove( m );
>>>>     modules_pack->remove( m );
>>>>
>>>>     build_process_queue();
>>>>
>>>>     client()->unlock();
>>>>
>>>>     redraw();
>>>> }
>>>>
>>>> and Chain.C:906, which has the segfault itself:
>>>>
>>>> /**********/
>>>> /* Client */
>>>> /**********/
>>>>
>>>> void
>>>> Chain::process ( nframes_t nframes )
>>>> {
>>>>     for ( std::list<Module*>::const_iterator i = process_queue.begin();
>>>> i != process_queue.end(); ++i )
>>>>     {
>>>>         Module *m = *i;
>>>>
>>>>         m->process( nframes );  // <-- segfault here
>>>>     }
>>>> }
>>>>
>>>> Looks to me like something's not getting removed completely.  Maybe a
>>>> multithreaded race condition that always loses on my machine?  (yes, I know
>>>> the removal is inside a lock, but anything can have bugs in it, including
>>>> the lock structure or perhaps more likely its use)
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>> *From:* John Rigg
>>>> *Sent:* Saturday, January 02, 2021 3:16AM
>>>> *To:* Non
>>>> *Subject:* Re: [non] Segfault when deleting a control
>>>>
>>>> On Fri, Jan 01, 2021 at 09:51:35AM -0600, Aaron Duerksen wrote:
>>>>
>>>> 1. Start non-mixer
>>>> 2. Add a strip
>>>> 3. Add a Mono Pan, or anything else, really
>>>> 4. Bind a control from it
>>>> 5. Remove that control
>>>> 6. Segfault
>>>>
>>>> This happens every time, as demonstrated in this 45-second video 
>>>> screenshot:https://www.youtube.com/watch?v=9mmC_ODMmfo
>>>>
>>>> I would review the core dump and include at least parts of it here, if I
>>>> knew where it was.?? Lubuntu 20.04
>>>>
>>>> I would also create a ticket on GitHub, if I could figure out how. I can 
>>>> see
>>>> the existing issues and read them, but I can't figure out how to add one,
>>>> even after creating an account.?? The obvious eye-catching way seems to
>>>> dead-end.
>>>>
>>>> The 'issues' link on the GitHub page was recently removed, so I guess
>>>> this list is the official way to report bugs.
>>>>
>>>> If you haven't already read it, see the bug reporting page 
>>>> athttps://non.tuxfamily.org/wiki/BugReports (ignoring references
>>>> to GitHub).
>>>>
>>>> A gdb backtrace will be helpful. You'll need to compile non with
>>>> debugging enabled, ie.:
>>>> ./waf configure --enable-debug
>>>>
>>>> John
>>>>
>>>>
>>>>
>>>>

Reply via email to