Re: A little bit of feedback

Dennis Filder via Matroska-devel <[email protected]> Wed, 14 Apr 2021 00:18:24 +0200
Newsgroups gmane.comp.multimedia.matroska.devel
Message-ID <20210413221824.GE3671@reader>
On Tue, Apr 13, 2021 at 10:19:39PM +0200, Moritz Bunkus wrote:

> I'm really not sure what kind of a response you're looking for (maybe none
> at all if you only wanted to vent), but here's one: the most obvious reason
> is that no one cared enough to invest the time.

That's a pretty lukewarm way of looking at this: open source
software projects are exercises in distributing work across many
shoulders, but this can only succeed if any prospective participant
can have some degree of assurance that his effort won't be in vain.
If they have to guess on the important details then they'll contribute
to projects where they don't have to do that.

An outsider has no way of knowing if there is not some hidden, but
good reason for why any apparent defect is the way it is.  That is why
not clarifying the modalities for improvement is so enraging as it is
so easily avoidable.  Tell people what needs fixing and what
constitutes "fixed" and what constraints they need to mind.

An outsider also lacks the intimate knowledge of the important details
needed to untangle hairy code sections.  This is really where you are
the ones who have to make the first step.  I tried to look at
test/mux/test6.cpp (after converting it to UTF-8) and it gave me a
failed assertion due to a call to KaxAudioPosition::RenderData()
because apparently that is no longer supported.  After commenting that
out it gave me a segfault (stack trace below) due to what I presume to
be double-free.  What am I supposed to do with that?  I tried to see
if I can fix that bug, but that's literally impossible without knowing
the exact ownership rules of the code.

As a first step you should communicate what features of C++ are
permitted/to be avoided and what goals on ABI and API stability the
project aims for, if any.  Then draft a TODO file and add:

* what documentation system should eventually be used,
* how the test suite should look like eventually and what it should
  cover,
* what remains to be done for completing the KaxBlockGroup to
  KaxBlockBlob transition in KaxCues.{h,cpp},
* how the KaxPureBlock class will eventually fit into all of this.

And then, please, try to make test/mux/test6.cpp at least run without
crashing.  After that questions of refactoring become much easier to
discuss.

Thanks in advance,
Dennis.
----------------------------------------------------------------------
from test/mux/test6.cpp at commit 8cf9207d42f321a78db0514dc2043c59240288f2
#0  0x00007ffff7f66974 in libmatroska::KaxBlockBlob::~KaxBlockBlob() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#1  0x00007ffff7f6640d in libmatroska::KaxReferenceBlock::FreeBlob() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#2  0x00007ffff7f6639c in libmatroska::KaxReferenceBlock::~KaxReferenceBlock() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#3  0x00007ffff7f663c4 in libmatroska::KaxReferenceBlock::~KaxReferenceBlock() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#4  0x00007ffff7ee309f in libebml::EbmlMaster::~EbmlMaster() () from /lib/x86_64-linux-gnu/libebml.so.5
#5  0x00007ffff7f66240 in libmatroska::KaxBlockGroup::~KaxBlockGroup() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#6  0x00007ffff7f6625c in libmatroska::KaxBlockGroup::~KaxBlockGroup() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#7  0x00007ffff7f6697c in libmatroska::KaxBlockBlob::~KaxBlockBlob() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#8  0x00007ffff7f6640d in libmatroska::KaxReferenceBlock::FreeBlob() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#9  0x00007ffff7f6639c in libmatroska::KaxReferenceBlock::~KaxReferenceBlock() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#10 0x00007ffff7f663c4 in libmatroska::KaxReferenceBlock::~KaxReferenceBlock() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#11 0x00007ffff7ee309f in libebml::EbmlMaster::~EbmlMaster() () from /lib/x86_64-linux-gnu/libebml.so.5
#12 0x00007ffff7f66240 in libmatroska::KaxBlockGroup::~KaxBlockGroup() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#13 0x00007ffff7f6625c in libmatroska::KaxBlockGroup::~KaxBlockGroup() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#14 0x00007ffff7f6697c in libmatroska::KaxBlockBlob::~KaxBlockBlob() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#15 0x00007ffff7f6640d in libmatroska::KaxReferenceBlock::FreeBlob() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#16 0x00007ffff7f6639c in libmatroska::KaxReferenceBlock::~KaxReferenceBlock() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#17 0x00007ffff7f663c4 in libmatroska::KaxReferenceBlock::~KaxReferenceBlock() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#18 0x00007ffff7ee309f in libebml::EbmlMaster::~EbmlMaster() () from /lib/x86_64-linux-gnu/libebml.so.5
#19 0x00007ffff7f66240 in libmatroska::KaxBlockGroup::~KaxBlockGroup() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#20 0x00007ffff7f6625c in libmatroska::KaxBlockGroup::~KaxBlockGroup() () from /tmp/libmatroska/build/libmatroska.so.7.0.0
#21 0x00007ffff7ee309f in libebml::EbmlMaster::~EbmlMaster() () from /lib/x86_64-linux-gnu/libebml.so.5
#22 0x000055555555c292 in libmatroska::KaxCluster::~KaxCluster() ()
#23 0x000055555555a9fa in main ()
_______________________________________________
Matroska-devel mailing list
[email protected]
https://lists.matroska.org/cgi-bin/mailman/listinfo/matroska-devel
Read Matroska-Devel on GMane: http://dir.gmane.org/gmane.comp.multimedia.matroska.devel