Sept 8 TSC Agenda and OMP Support needs

OMP Support questions:

Twitter account
Git Projects set up
Review of committers set-up
@AOrthVector feel free to list others.

Possible Agenda Items for TSC Include:

Technical Debt listing, and third party licenses and versions
Hardware access status
jdbc driver and database selection
documentation and getting started guide
Governance documentation and approach
CII Badge Prioritization
R&D Efforts, Spark Integration

Replace Tweeter with Twitter, please

Thought of another item this morning, if we expect an increase in traffic from the shoutout next week, do we want to have a Call to Action list of skills, activities we need? Or anything else under Call to Action

Yea; good thought.  I think we will have an uptick.  The closest thing I have is what I put at the bottom of the Spark post, but we could certainly stand to upgrade that list from more than a month ago.  https://genevaers.org/2020/07/29/organize-and-commit-to-the-spark-genevaers-poc/

-We can do a Twitter account if we like
-Links to other things that might help us are:

https://docs.github.com/en/github/managing-your-work-on-github/about-milestones
-Ways of doing using Git Actions to build our TSC meeting agendas
https://github.com/AcademySoftwareFoundation/openexr/milestones
https://github.com/openmainframeproject/tac#tac-projects
https://github.com/openmainframeproject/tac/blob/master/.github/workflows/send_tac_meeting_agenda.yml

https://github.com/openmainframeproject/tac/blob/master/.github/workflows/create_agenda.yml
https://github.com/openmainframeproject/tac/blob/master/.github/ISSUE_TEMPLATE/meeting.md
https://github.com/genevaers/community/tree/master/.github

https://github.com/genevaers/community/blob/master/.github/workflows/create_agenda.yml

This has been worked.


Test coverage

What's the purpose of this PR
Increases the test coverage.
XXXXX
Which issue(s) this PR fixes:
Fixes #3874
Brief changelog
XXXXX
Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Read the Contributing Guide before making this pull request.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Write necessary unit tests to verify the code.
[ ] Run mvn clean test to make sure this pull request doesn't break anything.
[ ] Update the CHANGES log.

Codecov Report

Merging #4292 (18b1987) into master (f6ce7f5) will increase coverage by 0.53%.
The diff coverage is n/a.

:exclamation: Current head 18b1987 differs from pull request most recent head 39622d8. Consider uploading reports for the commit 39622d8 to get more accurate results

@@             Coverage Diff              @@
##             master    #4292      +/-   ##
============================================
+ Coverage     53.14%   53.68%   +0.53%
- Complexity     2668     2702      +34
============================================
  Files           488      488
  Lines         15253    15253
  Branches       1577     1577
============================================
+ Hits           8106     8188      +82
+ Misses         6592     6509      -83
- Partials        555      556       +1

Impacted Files
Coverage Δ

...ervice/service/ReleaseMessageServiceWithCache.java
85.88% <0.00%> (-1.18%)
:arrow_down:

.../apollo/internals/RemoteConfigLongPollService.java
77.71% <0.00%> (-0.61%)
:arrow_down:

...framework/apollo/portal/entity/bo/NamespaceBO.java
72.41% <0.00%> (+3.44%)
:arrow_up:

...ip/framework/apollo/core/utils/PropertiesUtil.java
92.30% <0.00%> (+15.38%)
:arrow_up:

...ctrip/framework/apollo/core/utils/MachineUtil.java
80.00% <0.00%> (+80.00%)
:arrow_up:

...ramework/apollo/openapi/util/OpenApiBeanUtils.java
98.52% <0.00%> (+89.70%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f6ce7f5...39622d8. Read the comment docs.


Any idea?

[Error  : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
ExtendedPlayerInventory.BepInExPlugin+HaveEmptySlot_Patch.Prefix (Inventory __instance, System.Boolean& __result, System.Collections.Generic.List`1[T] ___m_inventory, System.Int32 ___m_width, System.Int32 ___m_height) (at <4c0568a64cd44a31b6fcb2184a5e5942>:0)
(wrapper dynamic-method) Inventory.DMDInventory::HaveEmptySlot(Inventory)
(wrapper dynamic-method) Inventory.DMDInventory::CanAddItem(Inventory,ItemDrop/ItemData,int)
Automatics.AutomaticProcessing.AutomaticCraft.Run (Smelter piece, ZNetView zNetView) (at <4194280648e14ef9b5bf68be6409a9a5>:0)
Automatics.AutomaticProcessing.Patches.SmelterUpdateSmelterPostfix (Smelter __instance, ZNetView ___m_nview) (at <4194280648e14ef9b5bf68be6409a9a5>:0)
(wrapper dynamic-method) Smelter.DMDSmelter::UpdateSmelter(Smelter)

When run CanAddItem to see if Automatics can add material to Smelter, it runs the ExtendedPlayerInventory patch, but an error occurs there, so this log is being output. There is nothing that Automatics can do about it, so this Issue is closed.


with bootstrap 4

I have this error when run bundle
Your Gemfile lists the gem devise-bootstrap-views (>= 0) more than once.
You should probably keep only one of them.
While it's not a problem now, it could cause errors if you change the version of just one of them later.

@imidsac
i used gem 'bootstrap', '~> 4.0.0.alpha3'  .I could nt get devise-bootstrap-views listing twice when i use bundle.Could please share your repo.

source 'https://rubygems.org'
Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.4'
Use postgresql as the database for Active Record
gem 'pg'
Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
See https://github.com/rails/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby
Use jquery as the JavaScript library
gem 'jquery-rails'
Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
Use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.7'
Use Unicorn as the app server
gem 'unicorn'
Use Capistrano for deployment
gem 'capistrano-rails', group: :development
group :development, :test do
Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
end
group :development do
Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 2.0'
Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
end
group :production do
gem 'rails_12factor'
#gem 'aws-sdk', '< 2.0'
end
gem 'devise-bootstrap-views'
DROIT
gem 'devise', '~> 3.2'
gem 'cancancan', '1.9.2'
gem 'bootstrap', '~> 4.0.0.alpha2'
source 'https://rails-assets.org' do
gem 'rails-assets-tether', '>= 1.1.0'
end

You can use bootstrap4 branch from #46.


new_uid removed from port.copy() but not completely from component_reference.py

In commit 7f740cb6879489026e4577fb29a1e53319a41ad0
new_uid was removed from port.copy() as an argument.
In component_reference.py line 445
new_uid is still passed as an argument, causing myref.ports not accessible in some cases.
Would suggest removing the new_uid argument from line 445 of component_reference.py

Thank you Yuyang!


project one

[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: c8902e25-5067-799f-db06-1e587b23ff55
Version Independent ID: 9219df69-9436-0b6c-6b85-c7e06157bd32
Content: Database connection configuration in Azure Static Web Apps
Content Source: articles/static-web-apps/database-configuration.md
Service: static-web-apps
GitHub Login: @craigshoemaker
Microsoft Alias: cshoe

@Degesew21
Could you please elaborate the query for better understanding. So, we can assist you further.

@Degesew21
Since we have not heard back from you, we will now proceed to close this thread.
If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Fix logstore extra dump in get_status

Codecov Report

Merging #126 (63ef6c2) into stable/v3.x (dd44ed2) will decrease coverage by 0.19%.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@               Coverage Diff               @@
##           stable/v3.x     #126      +/-   ##
===============================================
- Coverage        45.52%   45.34%   -0.19%
===============================================
  Files              134      126       -8
  Lines            16985    16347     -638
  Branches          2008     1937      -71
===============================================
- Hits              7733     7413     -320
+ Misses            8529     8227     -302
+ Partials           723      707      -16

Impacted Files
Coverage Δ

src/homelogstore/log_store.cpp
37.43% <ø> (+1.65%)
:arrow_up:

... and 12 files with indirect coverage changes


Is there a problem with installation at the moment?

I'm getting following output after installing all dependencies (see Readme):
pi@raspberrypi:~ $ sudo pip3 install pibooth
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: pibooth in /usr/local/lib/python3.7/dist-packages (1.0.4) Requirement already satisfied: gphoto2 in /usr/local/lib/python3.7/dist-packages (from pibooth) (2.0.0) Requirement already satisfied: picamera in /usr/lib/python3/dist-packages (from pibooth) (1.13) Collecting Pygame==1.9.4 (from pibooth)   Using cached https://files.pythonhosted.org/packages/b2/6b/c510f0853765eb2219ca5aa3d416d65bb0dea7cd9bb2984aea0a0e04c24d/pygame-1.9.4.tar.gz     Complete output from command python setup.py egg_info:
WARNING, No "Setup" File Exists, Running "config.py"
Using UNIX configuration...

Hunting dependencies...
SDL     : found 1.2.15
FONT    : not found
IMAGE   : not found
MIXER   : not found
PNG     : found
JPEG    : found
SCRAP   : found
PORTMIDI: not found
PORTTIME: not found
FREETYPE: found 22.1.16
Missing dependencies

----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-8a9q93k4/Pygame/
Half a year ago, I could install it without any problems.
Any ideas?
Thanks a lot!
PS It´s a great project.

Hi,
This is due to the integration of the lib pygame-menu as dependancies, it' require pygame >= 1.9.4. I'm working on it to fix this issue.
A workaround, you can install the pygame dependencies by typing this command:
sudo apt-get install python-dev libsdl-image1.2-dev libsdl-mixer1.2-dev \
        libsdl-ttf2.0-dev libsdl1.2-dev python-numpy libportmidi-dev libjpeg-dev \
        libtiff5-dev libx11-6 libx11-dev xfonts-base xfonts-100dpi xfonts-75dpi \
        xfonts-cyrillic fluid-soundfont-gm musescore-soundfont-gm

https://github.com/bennuttall/piwheels/issues/52

On my Pi the Problem was the cached pygame version, I guess. After downloading the sources and installing like described on https://www.pygame.org/wiki/GettingStarted with a little edit: LOCALBASE=/usr/bin python3 setup.py install.
After that the normal pibooth installation via pip3 worked :-)
Thanks a lot and greetins to france :-)


run should work with multiple lines

Currently run commands in the build section of can only be a single line. They should support multiple lines.
The sensible way of supporting this would probably be to write out the build commands to a shell script and then run that. E.g. write out string to tmpdir/build/0, tmpdir/build/1, etc, then output this in the Dockerfile:
COPY tmpdir/build /tmp/build
RUN /bin/sh /tmp/build/0
RUN /bin/sh /tmp/build/1

Oh, we can just do this: https://www.docker.com/blog/introduction-to-heredocs-in-dockerfiles/
With a suitable unique heredoc string.


How would I select all sub documents?

var tree = new Baobab({
  users: {
    john: {
      firstname: 'John',
      lastname: 'Gold'
    },
    jack: {
      firstname: 'Jack',
      lastname: 'Gold'
    }
  }
});

In this example how would I select all users with the last name "Gold"?
eg:
tree.select('users', '*', {lastname: 'Gold'})

Hello @srossross. Baobab cursors cannot look over multiple nodes in the tree (as opposed to jQuery for instance) for sanity and performance reasons.
What do you need to do here? Retrieve all the users with the last name Gold or do you also need to observe their changes (in that case I can show you how you could solve your issue by using monkeys).

What do you need to do here? Retrieve all the users with the last name Gold

Yes, That was what I was wondering. Thank you for the response.


Add Exponential Distribution quantile function

Summary
This PR introduces the quantile function of the exponential distribution.
I've used the _qf suffix, as suggested by @spinkney over in #2513
Tests
prim and mix tests have been added
Side Effects
Additional prob folders have been created in the fwd and rev folders so that the gradients for vector returns can be specified.
Release notes
Added quantile function for the exponential distribution
Checklist

[x] Math issue #2517

[x] Copyright holder: Andrew Johnson
The copyright holder is typically you or your assignee, such as a university or company. By submitting this pull request, the copyright holder is agreeing to the license the submitted work under the following licenses:
- Code: BSD 3-clause (https://opensource.org/licenses/BSD-3-Clause)
- Documentation: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

[x] the basic tests are passing

unit tests pass (to run, use: ./runTests.py test/unit)
header checks pass, (make test-headers)
dependencies checks pass, (make test-math-dependencies)
docs build, (make doxygen)
code passes the built in C++ standards checks (make cpplint)

[x] the code is written in idiomatic C++ and changes are documented in the doxygen

[x] the new changes are tested

Note that the rest of the quantile functions to be added will follow the same naming _qf suffix and folder structure rev/prob and fwd/prob, so I'd encourage anyone interested to speak up if that clashes in any way
(Let me know if there's anyone I should tag to make sure this gets seen)

Closing for now to clear PR backlog, will re-open once ready for review


Set readOnlyRootFilesystem as true in Controller Deployment

Setting Controller's Deployment security context readOnlyRootFilesystem to true to increase the security and to avoid being flagged by the security scanner.

Changes

Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[ ] Has Docs included if any changes are user facing
[ ] Has Tests included if any functionality added or changed
[x] Follows the commit message standard
[x] Meets the Tekton contributor standards (including
functionality, content, code)
[ ] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings)
[ ] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
NONE

/lgtm


gridster-item-transition-end example usage

https://github.com/ManifestWebDesign/angular-gridster#gridster-item-transition-end
Not a bug I admit... but I must be completely dense, but I dont get how one would consume this and have it be of any kind of use. If I tack something on to gridsterItem scope, am I not just modifying source? Is there any way my <li gridster-item.. can wire this up? I'd like to be able to subscribed to item-transition-end, so I can do some resizing etc.

Not entirely sure what your question is, but the wiring could potentially happen through gridster-item directive. You would use this transition end for something you want to do AFTER the resize has happened.

Are you asking how to listen to the event?
$scope.$on('gridster-item-transition-end', function(item) { ... do some stuff with the item ... } )

My point was thats an event thats getting fired on the gridster-item itself, not the gridster layout as a whole. I'd just like to be able to make sure my charts just fully resize once I drop my resizable size... sometimes it appears to be animated to a snapped value but draws the chart too soon afterwards. If its not too much to ask, would it be possible of just the simplest possible example with even just an alert firing after the item finished transitioning?

should specify it won't work with ie9 non ?


PLFM-6644: Improved kinesis logger

Sends as many objects as possible into a single record
Handle batching respecting the size limits
Implements exp backoff on batch failures

Depends on https://github.com/Sage-Bionetworks/Synapse-Stack-Builder/pull/368


cli -b and --bowerJson produce different results

If running via this CLI, -b filename does not behave properly, as the scripts reads the JSON contents of the filename, puts it in the same -b property and later overwrites it again with just the filename.
This only happens for -b, not for --bowerJson.
PR to follow soon.

@stephenplusplus Hi, could you take a quick look at this?

Sorry for taking so long and thanks for helping out! I have a quick comment to make over on the PR.

Updated the PR per your suggestion


support asp.net core

do you have any plan for release new version compatible by .net core?

Not yet. Interceptors are missing from EF Core 1.x.


[BUG] webhint ignores .browserslistrc in angular application

Environment (please complete the following information):

OS: Windows 10
Extension version: 2.0.0

Angular application (13.1.0)

Describe the bug:

I have an angular application and browsers are restricted to last 2 Edge versions in .browserslistrc. There are still hints (warnings/errors) about browser compatability.
E.g. scss width: fit-content produces

width: fit-content' is not supported by Firefox, Firefox for Android.
Add 'width: -moz-fit-content' to support Firefox 3+, Firefox for Android 4+.Microsoft Edge Tools compat-api/css

Adding a .hintrc with
{
  "browserslist": [
    "last 2 Edge versions"
  ]
}

didn't help either.
(When I open a folder with only a scss file with such a property and the .hintrc it does work as expected.)
Repro steps:

Create new angular application
Restrict .browserslistrc to last 2 Edge versions (or major)
Add .test { width: fit-content; } to app.component.scss

Expected behavior:

Only hint warnings/errors for browsers supported by the application.
Additional context:

That's weird, according to this comment from @antross, this should work: https://github.com/microsoft/vscode-edge-devtools/issues/663#issuecomment-1042378169
I am not very familiar with the browserslist syntax, but one difference I see is that you've used specified your target browsers as a string in an array, however in the issue I linked to, it's only a string (no array container).
Maybe that makes a difference? Worth a try.

That's weird, according to this comment from @antross, this should work: #663 (comment)
I am not very familiar with the browserslist syntax, but one difference I see is that you've used specified your target browsers as a string in an array, however in the issue I linked to, it's only a string (no array container). Maybe that makes a difference? Worth a try.

There are basically three places I can put this. package.json, .browserslistrc and .hintrc. I have tried all of them (though, since I want to restrict the whole application, either package.json or .browserslistrc is the correct choice (package.json takes precedence)).
Currently I'm using .browserlistrc, the comment from antross uses package.json (single string or array of strings doesn't matter, just tried it) and I've tried with .hintrc (additionally).
I'm really not sure what might be the cause here, but something seems to be clashing.

@gunnarburmeister, it looks like webhint isn't automatically picking up changes to .browserslistrc, but if I restart VS Code (Ctrl+Shift+P, then choose "Developer: Reload Window") after updating the list it appears to work correctly. Does this work for you too after restarting VS Code?

@antroos Sorry for the late reply. I got sick and will only be able to check on this next week again on work.
I didn't update the .browserslistrc for this originally though. I just switched from the deprecated edge debugger to the new extension.
I did a quick test on my home machine and it seems to work fine here (not my work projekt though). Maybe I have some other conflicting extension installed on my work machine.

@gunnarburmeister thanks for the update. I'll keep this active for now and hopefully we can figure out what's different about your work project or environment. If you can even strip it down enough to be able to share it that'd be great, but I understand that may not be possible.
I will note that if there's a .hintrc file and that contains a browserslist entry then webhint will force that one to override anything provided anywhere else (so any other entries in .browserslistrc or package.json would effectively be ignored regardless of the precedence browserslist itself gives them).

@antross Hmm, apparently it is not related to another extension. I tried disabling every other extension one by one (with reloads after each) until only the edge extension was remaining - still getting the warnings/errors.
I'm only using a .browserlistrc file, no entry in package.json and no .hintrc (the project itself is like 2.5 years old and the browserrestriction maybe 1.5).
I incidentally seem to have found the reason now (been testing some more stuff while writing this comment):
I have a brand new angular test project (like in the initial post, just created a new angular app inside a folder, restrict version in .browserslistrc (with reload) and added a test case). This creates the following folder structure:
test
- test-app
-- src
-- .browserlistrc
-- angular.json
-- package.json
-- tsconfig.json
-- ...

When I open the top level folder test in VSCode I get the errors, if I open the sub folder test-app everything is fine. It seems like it can't resolve the paths correctly like this (wrong root/not relative?).


[Q] got stuck with a very simple ffmpeg mcast->tsswitch->ffmpeg record config

hi,
i need to switch b/t 2 ffmpeg created multicasts, so i first create mcast (~cbr) :
ffmpeg -loglevel info -re -stream_loop -1 -i slates/x.mp4 -threads 0 -f mpegts -c:a libfdk_aac -ac 2 -af aresample=48000
-c:v libx264 -g 25 -r 25 -tune film -keyint_min 25 -sc_threshold 0 -pix_fmt yuv420p -x264-params nal-hrd=cbr -b:v 800k
-s:v 640x360 -preset:v superfast -profile:v high -level:v 4.1 -maxrate:v 800k -bufsize:v 1600k -map 0 -b:a 160k udp://<IP_ADDRESS>:1234?ttl=2&localaddr=<IP_ADDRESS>
it runs ok 👍  :
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'slates/x.mp4':
Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
encoder         : Lavf58.46.101
location-eng    : +47.4833+001.8081/
location        : +47.4833+001.8081/
Duration: 00:01:00.83, start: 0.000000, bitrate: 1980 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 1842 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name    : VideoHandle
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name    : SoundHandle
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[libx264 @ 0x270c940] using SAR=1/1
[libx264 @ 0x270c940] using cpu capabilities: none!
[libx264 @ 0x270c940] profile Progressive High, level 4.1, 4:2:0, 8-bit
Output #0, mpegts, to 'udp://<IP_ADDRESS>:1234?ttl=2&localaddr=<IP_ADDRESS>':
Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
location        : +47.4833+001.8081/
location-eng    : +47.4833+001.8081/
encoder         : Lavf58.27.100
Stream #0:0(eng): Video: h264 (libx264), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 800 kb/s, 25 fps, 90k tbn, 25 tbc (default)
Metadata:
handler_name    : VideoHandle
encoder         : Lavc58.48.101 libx264
Side data:
cpb: bitrate max/min/avg: 800000/0/800000 buffer size: 1600000 vbv_delay: -1
Stream #0:1(eng): Audio: aac (libfdk_aac), 48000 Hz, stereo, s16, 160 kb/s (default)
Metadata:
handler_name    : SoundHandle
encoder         : Lavc58.48.101 libfdk_aac
frame=  347 fps= 25 q=16.0 size=    1796kB time=00:00:14.05 bitrate=1046.6kbits/s dup=0 drop=68 speed=0.997x

i can get report on it wxith tsp/analyze :
tsp -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 -P until --seconds 10 -P analyze --service-analysis -O dro
|  SERVICES ANALYSIS REPORT                                                   |
|=============================================================================|
|  Global PID's                                                               |

TS packets: 192, PID's: 2 (clear: 2, scrambled: 0)

PID  Usage                                     Access          Bitrate

Total  Global PID's ................................. C       13,060 b/s

Subt.  Global PSI/SI PID's (0x00-0x1F) .............. C       13,060 b/s

0x0000  PAT .......................................... C       10,816 b/s

0x0011  SDT/BAT ...................................... C        2,244 b/s

=============================================================================

Unreferenced PID's

TS packets: 2, PID's: 2 (clear: 2, scrambled: 0)

-----------------------------------------------------------------------------

PID  Usage                                     Access          Bitrate

Total  Unreferenced PID's ........................... C          136 b/s

0x093C  Unreferenced ................................. C           68 b/s

0x1CD1  Unreferenced ................................. C           68 b/s

=============================================================================

Service: 0x0001 (1), TS: 0x0001 (1), Original Netw: 0xFF01 (65281)

Service name: Service01, provider: FFmpeg

Service type: 0x01 (Digital television service)

TS packets: 6,197, PID's: 3 (clear: 3, scrambled: 0)

PMT PID: 0x1000 (4096), PCR PID: 0x0100 (256)

-----------------------------------------------------------------------------

PID  Usage                                     Access          Bitrate

Total  Digital television service ................... C      421,553 b/s

0x0100  AVC video .................................... C      340,534 b/s

0x0101  MPEG-2 AAC Audio (eng) ....................... C       70,134 b/s

0x1000  PMT .......................................... C       10,884 b/s

(C=Clear, S=Scrambled, +=Shared)

===============================================================================

i can record that multicast w/o errors :
ffmpeg -y -loglevel info -i udp://<IP_ADDRESS>:1234?fifo_size=4000000&buffer_size=4000000&overrun_nonfatal=1&timeout=5000000&localaddr=<IP_ADDRESS>
-s 640:360 -b:v 800k -r 25 -g 50 -c:a aac -ac 1 -b:a 64k -f mpegts record/record.ts
======================
[h264 @ 0x3c50780] decode_slice_header error
[h264 @ 0x3c50780] no frame!
Input #0, mpegts, from 'udp://<IP_ADDRESS>:1234?fifo_size=4000000&buffer_size=4000000&overrun_nonfatal=1&timeout=5000000&localaddr=<IP_ADDRESS>':
Duration: N/A, start: 1498.546667, bitrate: N/A
Program 1
Metadata:
service_name    : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 640x360 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:10x101: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 168 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg2video (native))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[h264 @ 0x3c4b1c0] co located POCs unavailable
Output #0, mpegts, to 'record/record.ts':
Metadata:
encoder         : Lavf58.27.100
Stream #0:0: Video: mpeg2video (Main), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 800 kb/s, 25 fps, 90k tbn, 25 tbc
Metadata:
encoder         : Lavc58.48.101 mpeg2video
Side data:
cpb: bitrate max/min/avg: 0/0/800000 buffer size: 0 vbv_delay: -1
Stream #0:1(eng): Audio: aac (LC), 48000 Hz, mono, fltp, 64 kb/s
Metadata:
encoder         : Lavc58.48.101 aac
frame=  474 fps= 32 q=2.0 size=    2048kB time=00:00:20.09 bitrate= 834.9kbits/s speed=1.35x

now i add tsswitch (i've tried 2 mcas sources .10 and .11 its the same, so here i "switch" between 2 .10 :
tsswitch --debug --remote 4444 --primary-input 0 --fast-switch --infinite -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234
-I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 -O ip --packet-burst 7 --enforce-burst -l <IP_ADDRESS> <IP_ADDRESS>:1234
and things start to get wierd, tsp is not quite happy, reports no TS packets (n.b. not complete asbcence of mcast) :
tsswitch --debug --remote 4444 --primary-input 0 --fast-switch --infinite -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234
-I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 -O ip --packet-burst 7 --enforce-burst -l <IP_ADDRESS> <IP_ADDRESS>:1234
tsswitch: Debug: debug level set to 1
tsswitch: Debug: ====> tsswitch --debug --remote 4444 --primary-input 0 --fast-switch --infinite

Debug: debug level set to 1
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -O ip --packet-burst 7 --enforce-burst -l <IP_ADDRESS> <IP_ADDRESS>:1234
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234
Debug: ip[0]: debug level set to 1
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234
Debug: ip[1]: debug level set to 1
Debug: ip: debug level set to 1
Debug: setting socket reuse address to 1
Debug: binding socket to <IP_ADDRESS>:4444
Debug: UDP server thread started
Debug: ip: output thread started
Debug: ip[0]: input thread started
Debug: ip[0]: waiting for input session
Debug: ip[0]: received start request, current: true
Debug: ip[1]: input thread started
Debug: ip[1]: waiting for input session
Debug: ip[1]: received start request, current: false
Debug: ip[0]: starting input plugin
Debug: ip[1]: starting input plugin
Debug: ip[0]: setting socket reuse address to 1
Debug: ip[0]: binding socket to <IP_ADDRESS>:1234
Debug: ip[1]: setting socket reuse address to 1
Debug: ip[1]: binding socket to <IP_ADDRESS>:1234
ip[0]: joining multicast group <IP_ADDRESS>:1234 from local address <IP_ADDRESS>
ip[1]: joining multicast group <IP_ADDRESS>:1234 from local address <IP_ADDRESS>
Debug: ip[0]: input plugin started, status: true
Debug: ip[1]: input plugin started, status: true
Debug: setting event: WAIT_STARTED, 0, true
Debug: setting event: WAIT_STARTED, 1, true
Debug: Watchdog thread started, id 0
Debug: setting event: WAIT_INPUT, 1, false
Debug: setting event: WAIT_INPUT, 0, false
Debug: ip[0]: no TS packet in message, 64 bytes
Debug: ip[1]: no TS packet in message, 64 bytes
Debug: ip[0]: no TS packet in message, 32 bytes
Debug: ip[1]: no TS packet in message, 32 bytes
....

and ffmpeg reports tons of missing / corrupt macroblocs etc :
ffmpeg -re -i udp://<IP_ADDRESS>:1234?fifo_size=4000000&buffer_size=4000000&overrun_nonfatal=1&timeout=5000000&localaddr=<IP_ADDRESS>
-s 640:360 -b:v 800k -r 25 -g 50 -c:a aac -ac 1 -b:a 64k -f mpegts record/record.ts
Input #0, mpegts, from 'udp://<IP_ADDRESS>:1234?fifo_size=4000000&buffer_size=4000000&overrun_nonfatal=1&timeout=5000000&localaddr=<IP_ADDRESS>':
Duration: N/A, start: 295.389333, bitrate: N/A
Program 1
Metadata:
service_name    : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 640x360 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:10x101: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 158 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg2video (native))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[h264 @ 0x36ec640] concealing 484 DC, 484 AC, 484 MV errors in P frame
[aac @ 0x36fd700] channel element 0.6 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x36fd700] channel element 2.10 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[h264 @ 0x377b340] error while decoding MB 36 20, bytestream -16
[h264 @ 0x377b340] concealing 133 DC, 133 AC, 133 MV errors in B frame
[aac @ 0x36fd700] Input buffer exhausted before END element found
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x36fd700] channel element 3.7 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x36fd700] Number of bands (56) exceeds limit (41).
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x36fd700] channel element 3.9 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[h264 @ 0x37e0bc0] cabac decode of qscale diff failed at 24 10
[h264 @ 0x37e0bc0] error while decoding MB 24 10, bytestream 3534
[h264 @ 0x37e0bc0] concealing 545 DC, 545 AC, 545 MV errors in P frame
[aac @ 0x36fd700] Number of bands (56) exceeds limit (41).
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x36fd700] Multiple frames in a packet.
[aac @ 0x36fd700] invalid band type
Error while decoding stream #0:1: Invalid data found when processing input
[h264 @ 0x38d98c0] concealing 197 DC, 197 AC, 197 MV errors in B frame

i run latest tsduck and not too old ffmpeg (4.1.4) , on ubuntu 16.04 lts, port 1234 is open on em2 on firewall , rp_filter disabled, i'm using /dev/em2 , enouth memory enabled for ffmpeg buffers in sysctl :
tsswitch --version
tsswitch: TSDuck - The MPEG Transport Stream Toolkit - version 3.24-2059uname

ffmpeg version 4.1.4 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11) 20160609
configuration: --pkgconfigdir=/root/ffmpeg-build-script/workspace/lib/pkgconfig --prefix=/root/ffmpeg-build-script/workspace --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg-build-script/workspace/include --extra-ldflags=-L/root/ffmpeg-build-script/workspace/lib --extra-libs='-lpthread -lm' --enable-static --disable-debug --disable-shared --disable-ffplay --disable-doc --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-runtime-cpudetect --enable-libfdk-aac --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libvidstab --enable-libaom --enable-libsrt

iptables -L | grep 1234
ACCEPT     udp  --  anywhere             anywhere             udp dpt:1234
ACCEPT     udp  --  anywhere             anywhere             udp spt:1234

ntsset.core.rmem_max=41943040
net.core.rmem_default=2097152
net.core.wmem_max=41943040
net.core.wmem_default=2097152
sysctl -ar '.rp_filter'
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.br-72f7afde48c2.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.docker0.rp_filter = 0
net.ipv4.conf.em1.rp_filter = 0
net.ipv4.conf.em2.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.tun0.rp_filter = 0

ifconfig
br-72f7afde48c2 Link encap:Ethernet  HWaddr 02:42:79:36:11:54
inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
docker0   Link encap:Ethernet  HWaddr 02:42:12:c4:e7:75
inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
em1       Link encap:Ethernet  HWaddr 54:9f:35:04:0e:92
inet addr:11ffmpe<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
em2       Link encap:Ethernet  HWaddr 54:9f:35:04:0e:94
inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
UP BROADCAST RUNNING MULTICAST  MTU:9000  Metric:1
RX packets:125976913518 errors:0 dropped:1 overruns:0 frame:0
TX packets:2704565131 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:173611259336824 (173.6 TB)  TX bytes:9570023949568 (9.5 TB)
Interrupt:17
lo        Link encap:Local Loopback
inet addr:<IP_ADDRESS>  Mask:<IP_ADDRESS>
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:<IP_ADDRESS>  P-t-P:<IP_ADDRESS>  Mask:<IP_ADDRESS>
=========================
so, can anyone wise me up, what the heck makes tsswitch unhappy ?
regards, &rei

Your command is (raw copy/paste, just reformatted):
tsswitch --debug --remote 4444 --primary-input 0 --fast-switch --infinite \
    -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 \
    -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 \
    -O ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 --packet-burst 7 --enforce-burst

So, you read the same stream in the two input plugins. If one single process (here tsswitch) reads the same multicast stream twice, are you sure that the same stream is duplicated and fully and identically read in the two sockets? Or are the UDP datagrams randomly distributed between the two, creating two incomplete TS? This is not a TSDuck question, this is an operating system question. I am not sure that the answer is the same on all operating systems.
More generally, multiple multicast streams are safely received when:

All multicast IP addresses are different in their 23 least significant bits (because of IP-to-MAC mapping). This can be successive IP addresses for simplicity.
All UDP ports are different.

Thus, if multiple receivers coexist in the same machine, they will send unique join group requests per stream and each socket is bound to a port that is unique to a stream.
When the two streams use different IP multicast addresses and different UDP ports (for instance <IP_ADDRESS>:1234 and <IP_ADDRESS>:1235), does tsswitch correctly forward a complete TS?

it's the same pb with 2 mcas ip (i've stated it : "i've tried 2 mcas sources .10 and .11 its the same")...
see the traces :

echo mcast1 <IP_ADDRESS>:1234
mcast1 <IP_ADDRESS>:1234
tsp -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 -P until --seconds 10 -P analyze --service-analysis -O drop

===============================================================================
|  SERVICES ANALYSIS REPORT                                                   |
|=============================================================================|
|  Global PID's                                                               |

TS packets: 197, PID's: 2 (clear: 2, scrambled: 0)

PID  Usage                                     Access          Bitrate

Total  Global PID's ................................. C       11,943 b/s

Subt.  Global PSI/SI PID's (0x00-0x1F) .............. C       11,943 b/s

0x0000  PAT .......................................... C       10,064 b/s

0x0011  SDT/BAT ...................................... C        1,879 b/s

=============================================================================

Unreferenced PID's

TS packets: 1, PID's: 1 (clear: 1, scrambled: 0)

-----------------------------------------------------------------------------

PID  Usage                                     Access          Bitrate

Total  Unreferenced PID's ........................... C           60 b/s

0x1A56  Unreferenced ................................. C           60 b/s

=============================================================================

Service: 0x0001 (1), TS: 0x0001 (1), Original Netw: 0xFF01 (65281)

Service name: Service01, provider: FFmpeg

Service type: 0x01 (Digital television service)

TS packets: 6,180, PID's: 3 (clear: 3, scrambled: 0)

PMT PID: 0x1000 (4096), PCR PID: 0x0100 (256)

-----------------------------------------------------------------------------

PID  Usage                                     Access          Bitrate

Total  Digital television service ................... C      374,677 b/s

0x0100  AVC video .................................... C      303,379 b/s

0x0101  MPEG-2 AAC Audio (eng) ....................... C       61,900 b/s

0x1000  PMT .......................................... C        9,397 b/s

(C=Clear, S=Scrambled, +=Shared)

===============================================================================

echo mcast2 <IP_ADDRESS>:1234
mcast2 <IP_ADDRESS>:1234
tsp -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 -P until --seconds 10 -P analyze --service-analysis -O drop

===============================================================================
|  SERVICES ANALYSIS REPORT                                                   |
|=============================================================================|
|  Global PID's                                                               |

TS packets: 197, PID's: 2 (clear: 2, scrambled: 0)

PID  Usage                                     Access          Bitrate

Total  Global PID's ................................. C       11,083 b/s

Subt.  Global PSI/SI PID's (0x00-0x1F) .............. C       11,083 b/s

0x0000  PAT .......................................... C        9,339 b/s

0x0011  SDT/BAT ...................................... C        1,744 b/s

=============================================================================

Unreferenced PID's

TS packets: 1, PID's: 1 (clear: 1, scrambled: 0)

-----------------------------------------------------------------------------

PID  Usage                                     Access          Bitrate

Total  Unreferenced PID's ........................... C           56 b/s

0x1A56  Unreferenced ................................. C           56 b/s

=============================================================================

Service: 0x0001 (1), TS: 0x0001 (1), Original Netw: 0xFF01 (65281)

Service name: Service01, provider: FFmpeg

Service type: 0x01 (Digital television service)

TS packets: 6,150, PID's: 3 (clear: 3, scrambled: 0)

PMT PID: 0x1000 (4096), PCR PID: 0x0100 (256)

-----------------------------------------------------------------------------

PID  Usage                                     Access          Bitrate

Total  Digital television service ................... C      346,004 b/s

0x0100  AVC video .................................... C      279,166 b/s

0x0101  MPEG-2 AAC Audio (eng) ....................... C       58,061 b/s

0x1000  PMT .......................................... C        8,776 b/s

(C=Clear, S=Scrambled, +=Shared)

===============================================================================

echo done analysis
done analysis
sleep 4
tsswitch --debug --remote 4444 --primary-input 0 --fast-switch --infinite -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 -O ip --packet-burst 7 --enforce-burst -l <IP_ADDRESS> <IP_ADDRESS>:1234
tsswitch: Debug: debug level set to 1
tsswitch: Debug: ====> tsswitch --debug --remote 4444 --primary-input 0 --fast-switch --infinite

Debug: debug level set to 1
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -O ip --packet-burst 7 --enforce-burst -l <IP_ADDRESS> <IP_ADDRESS>:1234
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234
Debug: ip[0]: debug level set to 1
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234
Debug: ip[1]: debug level set to 1
Debug: ip: debug level set to 1
Debug: setting socket reuse address to 1
Debug: binding socket to <IP_ADDRESS>:4444
Debug: UDP server thread started
Debug: ip: output thread started
Debug: ip[0]: received start request, current: true
Debug: ip[1]: received start request, current: false
Debug: ip[1]: input thread started
Debug: ip[0]: input thread started
Debug: ip[1]: waiting for input session
Debug: ip[0]: waiting for input session
Debug: ip[1]: starting input plugin
Debug: ip[0]: starting input plugin
Debug: ip[0]: setting socket reuse address to 1
Debug: ip[0]: binding socket to <IP_ADDRESS>:1234
ip[0]: joining multicast group <IP_ADDRESS>:1234 from local address <IP_ADDRESS>
Debug: ip[1]: setting socket reuse address to 1
Debug: ip[0]: input plugin started, status: true
Debug: ip[1]: binding socket to <IP_ADDRESS>:1234
Debug: setting event: WAIT_STARTED, 0, true
ip[1]: joining multicast group <IP_ADDRESS>:1234 from local address <IP_ADDRESS>
Debug: ip[1]: input plugin started, status: true
Debug: setting event: WAIT_STARTED, 1, true
Debug: Watchdog thread started, id 0
Debug: setting event: WAIT_INPUT, 1, false
Debug: setting event: WAIT_INPUT, 0, false
Debug: ip[1]: no TS packet in message, 96 bytes
Debug: ip[0]: no TS packet in message, 64 bytes
Debug: ip[0]: no TS packet in message, 32 bytes
Debug: ip[1]: no TS packet in message, 64 bytes
Debug: ip[1]: no TS packet in message, 64 bytes
Debug: ip[0]: no TS packet in message, 64 bytes
Debug: ip[1]: no TS packet in message, 64 bytes
Debug: ip[0]: no TS packet in message, 32 bytes
Debug: ip[1]: no TS packet in message, 32 bytes
Debug: ip[1]: no TS packet in message, 32 bytes
Debug: ip[1]: no TS packet in message, 32 bytes
Debug: ip[0]: no TS packet in message, 32 bytes
Debug: ip[0]: no TS packet in message, 64 bytes
Debug: ip[1]: no TS packet in message, 64 bytes

it shouldn't be a problem whatsoever if it the same mcast in tsswitch, multicast's idea is exactly that, imho (we started usinng tsduck for transcoding a ffmpeg created mcast and in paraller running tsp for source infos in case source vid properties change (they shouldn't in our setup)
.
ben, si tu vx tester, mes  4 scripts (très bateau :-) sont  ici :
https://drive.google.com/file/d/1Fsg_5tvuVUYmwnIgbH2V3h4oOdzJv_dg/view?usp=sharing
il faut redefinir source mp4 (slate/mp4) et virer local addr ou le mettre à 127.0.0 (:1) si t'as qu'un eth.
il faut lancer avec l'arg 1 (au depart c'était utilisé ds docker-compose)...
./slate.sh 1
./slate2.sh 1
./tsswitch.sh 1
et ./recoord... 1
fin, je pense pas que c'est un bug (ni de ffmpeg ni de tsduck), c'est un paramétrage à trouver, mais moi je n'arrive pas...
cdlt, &rei

More generally, multiple multicast streams are safely received when:
All multicast IP addresses are different in their 23 least significant bits (because of IP-to-MAC mapping). This can be successive IP addresses for simplicity. All UDP ports are different.

a titre d'info, j'ai +70 multicasts de pixagility et arkena qui arrivent sur le routeur, leurs ip changent (+1), les ports sont les mêmes. changer juste l'ip ca suffit...

it's the same pb with 2 mcas ip (i've stated it : "i've tried 2 mcas sources .10 and .11 its the same")...

It is unclear if you used twice .10 and then twice .11 or if you used .10 and .11 in the same command. The problem with your command is that you listen to .10 twice in the same command, which means that the two plugins compete to read the same stream. Please try tsswitch  -I ip ....10:1234 -I ip .....11:1234 ....

a titre d'info, j'ai +70 multicasts de pixagility et arkena qui arrivent sur le routeur, leurs ip changent (+1), les ports sont les mêmes. changer juste l'ip ca suffit...

Yes, the IP addresses are more important because they generate distinct join requests. Using the same port works but the performances are poor if the same receiver machine receives more than one stream because each socket being bound to the same common port, it receives all streams for which a join request was issued. The application has to manually filter each packet to select the ones from the appropriate source (and this is exactly what TSDuck does). This is why it is better to use distinct ports as well, even though it stills works with the same port.

The other important point is the messages "Debug: ip[0]: no TS packet in message, 64 bytes". This means that some input datagrams do not contain any TS packet. In fact, 64 bytes is too short. In general, IP TV packets contain 7 TS packets (1316 bytes) plus headers and optional RTP layer. Such short packets have nothing to do in an IP TV stream. It looks like your IP multicast stream does not contain TS packets, or not only TS packets. Could you check with Wireshark? Any other unrelated multicast on the same address in the network?
The tsp command with -P analyze seems to analyse the stream correctly (or at least receives TS packets, which does not mean that the stream is fully consistent). Does it display the same "no TS packet in message" errors? If this is the same stream, it should because the exact same ip plugin is used in tsp and tsswitch.

The problem with your command is that you listen to .10 twice in the same command, which means that the two plugins >compete to read the same stream. Please try tsswitch -I ip ....10:1234 -I ip .....11:1234 ....

you can see in the 2nd log 2 different mcast ips (this 2nd log is another run, and yes ffmpeg is still bitching about virtyally 50% of the output stream (.12 ip^) courrupt):
tsswitch --debug --remote 4444 --primary-input 0 --fast-switch --infinite -I ip -l <IP_ADDRESS> **<IP_ADDRESS>:**1234 -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234 -O ip --packet-burst 7 --enforce-burst -l <IP_ADDRESS> <IP_ADDRESS>:1234
tsswitch: Debug: debug level set to 1
tsswitch: Debug: ====> tsswitch --debug --remote 4444 --primary-input 0 --fast-switch --infinite
Debug: debug level set to 1
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -O ip --packet-burst 7 --enforce-burst -l <IP_ADDRESS> <IP_ADDRESS>:1234
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234
Debug: ip[0]: debug level set to 1
Debug: ip: debug level set to 1
Debug: ip: ====> tsswitch -I ip -l <IP_ADDRESS> <IP_ADDRESS>:1234

The tsp command with -P analyze seems to analyse the stream correctly (or at least receives TS packets, which does not mean that the stream is fully consistent).

well, somehow ffmpeg considers these ts streams pretty consistent and can transcode 'em before i make 'em pass through tsswitch...

There is no difference in the code between tsp and tsswitch in the way UDP packets are analyzed, this is the same ip plugin. The difference with tsswitch in your case, is that the two intances of the ip plugin open two distinct sockets on the same UDP port because you multicast all your streams on the same port. As I wrote twice, this works fine as long as each receiver machine listens to one single stream, meaning that each receiver machine has one single socket on port 1234.
You mention that all reception tests using ffmpeg work fine. But in all those cases, there is only one receiver per UDP port, not two as in the case of tsswitch.

yep, tsp with debug is also printing too short packets lengths warnings, but ends up decoding pat/sdt

somehow ffmpeg considers these ts streams pretty consistent and can transcode 'em

It is absolutely not normal that an IP TV stream contains short datagrams without TS packets. So, there is definitely something wrong in this stream. The fact that tsp can extract TS packets to analyze the stream does not mean that there is no garbage in addition to the TS stream. The ip plugin is designed to extract TS packets from UDP datagrams regardless of any encapsulation. So, it is pretty robust. If no TS packet can be extract, then there is that debug message.
You must analyze the actual content of the stream, not only the result of what ffmpeg is doing with that stream. In other words, analyze the cause, not the symptom. This is why I advised to use Wireshark. This is the only way to know what the UDP packets contain exactly. I suggest to capture a part of the stream using Wireshark and make sure that tsp or  tsswitch reports the "no TS packets" during this recording. Then, please post the corresponding pcap file here. We will see what the UDP datagrams contain.
If you want to have a look at how TSDuck receives and processes UDP datagrams, see here for the UDP reception and here for the TS packet extraction. This is surprisingly not as trivial as it seems.

ok, it was stupid me, forgot to to set output packet size :-) it's all clean now.
output should be set as udp://IP:PORT?ttl=TTL&localaddr=L_IP&pkt_size=1316
and when it works just great.  tnx for bearing w/ dumme me !
ffmpeg -loglevel info -re -stream_loop -1 -i slates/x.mp4 -threads 0 -f mpegts -c:a libfdk_aac -ac 2 -af aresample=48000 -c:v libx264 -g 25 -r 25 -tune film -keyint_min 25 -sc_threshold 0 -pix_fmt yuv420p -x264-params nal-hrd=cbr -b:v 800k -s:v 640x360 -preset:v superfast -profile:v high -level:v 4.1 -maxrate:v 800k -bufsize:v 1600k  -muxrate 1400k -map 0 -b:a 160k udp://<IP_ADDRESS>:1234?ttl=2&localaddr=<IP_ADDRESS>&pkt_size=1316&ttl=2
regards, &rei

If you want to have a look at how TSDuck receives and processes UDP datagrams, see here for the UDP reception and here for >the >TS packet extraction. This is surprisingly not as trivial as it seems.

nothing is trivial after you have to manage all kinds of wierd situations et errors... :-)
btw, ffmpeg can mux in  'pro_mpeg' with fec sent on 2 extra ports (http://underpop.online.fr/f/ffmpeg/help/prompeg.htm.gz),
wonder if it's possible to switch b/w that kind of streams...

if you're oldschool and i bit paranoid about all wierd kind of things that can happen

If "oldschool" means "robust code", then I am both indeed....

ffmpeg can mux in 'pro_mpeg' with fec sent on 2 extra ports (http://underpop.online.fr/f/ffmpeg/help/prompeg.htm.gz), wonder if it's possible to switch b/w that kind of streams...

This has been asked at least twice, latest in #627. This is currently not possible. This is a time consuming task and I have no time and no incentive to do it.


Samsungtv source selection not working

Dear,
On samsungtv component
HDMI selection seems to work,
But can select HDMI1, HDMI2, HDMI3, HDMI4, AV1.....
Can’t change hdmi ports
Please check and provide
Thanks

This is the bug/issue tracker for Home Assistant. Please use the forum for questions about installation, setup, configuration and usage.
If it's a bug, please re-open the issue with the issue template filled.


Bluetooth_Le_Audio: MICP

Renamed Microphone Input Control to Microphone Control. Release notes kept unchanged.
Fixes #47858

@Meshram-Vibhor The PR looks good, just need to fix your commit message.
Bluetooth_Le_Audio: MICP should be Bluetooth: Audio: MICP and then you need to fix your signed-off-by name as it requires a construct (see the failing compliance test).

Oh, sorry, should have been more explicit: The one-line commit message should also make sense :)
Suggest to make it something like Bluetooth: Audio: Remove "input" from MICP naming

@Thalley  Changes made as you suggested.

@Thalley Changes made as you suggested.

The commit message is still failing the check :( Please review your signoff line

@Thalley Signoff line seems correct. The current commit ID is 9d67adc60988c26de23750aaa7c72f390b6c8b32. However this compliance check is running on f17f665ad8546efb7bc36162ea23a3c1ff60627d. Not sure why this is happening.

@Thalley Signoff line seems correct. The current commit ID is 9d67adc60988c26de23750aaa7c72f390b6c8b32. However this compliance check is running on f17f665ad8546efb7bc36162ea23a3c1ff60627d. Not sure why this is happening.

Indeed, the signoff line looks correct now - But you still have an empty commit message :) Please add a commit message stating (briefly) what is being changed, and why

@Thalley Changes made as you suggested.

Is the signed off check failing because the account email has a dash and doesn't match First/Last name of the signed off by names?:

From dc4c0bb3309043c5dc8051fe34f0747abcbd6e6e Mon Sep 17 00:00:00 2001
From: Meshram-Vibhor<EMAIL_ADDRESS>Date: Tue, 21 Feb 2023 21:05:11 +0530
Subject: [PATCH] Bluetooth: Audio: Remove "Input" from MICP naming
Removed "Input" from Microphone Input Control Profile.
Release notes kept unchanged.
Signed-off-by: Vibhor Meshram<EMAIL_ADDRESS>

Not really sure why the compliance is failing, or what to do to fix it. @carlescufi Do you know?

@Meshram-Vibhor you need to run:
git commit --amend --author="Vibhor Meshram<EMAIL_ADDRESS>

Changes made.
Thanks @carlescufi


Fix posix_spawn() error handling.

posix_spawn() does not (portably) set errno. Instead, it returns its error code. Fix our call.
Checklist:

[ ] Code and documentation should follow the style of the Style Guide.
[ ] If public symbols are renamed or modified, DocC references should be updated.

@swift-ci test


Return 0 if no results returned at Model.count()

At dql.js#L201 waterline is returning models.length for the count() method but if you pass a query where the return of Model.find() is undefined, .count() will return an error - trying to get length of undefined.
I think the correct would be to just return 0 if no models are found:
    this.find(criteria, function(err, models) {
        if(!models) return cb(null, 0);

        cb(err, models.length);
    });

This appears to be fixed: https://github.com/balderdashy/waterline/commit/900d7d13a0b76baa4e6b3ad980d8a4eb8ccc98d7
We'll reopen if anyone finds otherwise!


CMP Fuzzer

This solves #11301 by adding fuzzing of all public CMP and CRMF data types.

[x] tests are added or updated

Adding CMP (and CRMF) types to fuzz/asn1.c, as suggested by @richsalz  was straightforward,
except that it turned out that for visibility reasons this can be done only for the public ones.
Is this already sufficient, or what should be done in addition?
@kroeckx mentioned adding a file that implements a FuzzerTestOneInput() function,
yet asn1.c already does so generically for the given ASN.1 types.

I think that adding it to asn1 isn't actually useful. The coverage
will ge up, the fuzzer will slow down, but it's really just
fuzzing duplicates of the same code.
(I actually had modified asn1.c here like that in November.)
One like cms, crl and x509 might be more useful.
But I think as part of your CMP work, you added things like an
HTTP client. I would like to see something that does something
with HTTP.
I don't know if there are other protocols involved. If there are,
it would be useful to test them.

I think that adding it to asn1 isn't actually useful. The coverage will ge up, the fuzzer will slow down, but it's really just fuzzing duplicates of the same code. (I actually had modified asn1.c here like that in November.)

So shall I remove that addition?

One like cms, crl and x509 might be more useful.

I've just added fuzz/cmp.c according to the model of fuzz/cms.c because it is most closely related, but this is suspiciously simple (like adding types to fuzz/asn1.c was).
I also found that fuzz/build.info and test/recipes/99-test_fuzz.t need to be extended accordingly.
Yet when invoking
make tests TESTS="test_fuzz" V=1

I only get
    1..1
../../util/wrap.pl ../../fuzz/cmp-test ../../fuzz/corpora/cmp => 0
    ok 1
ok 1 - Fuzzing cmp

I suspect I need to set up fuzz/corpora/cmp/ with all those hash-named files, but how?
A documentation/HOWTO for the OpenSSL fuzzing facility would be helpful here.

But I think as part of your CMP work, you added things like an HTTP client. I would like to see something that does something with HTTP.

CMP, like CMS, is actually independent of the transfer protocol - HTTP is just the default.
So I think they are better tested independently.
HTTP is not an ASN.1-based protocol, and I have no clue how to fuzz that.
When adding the generic HTTP client support I've already added non-fuzzing tests for it:
test/http_test.c
test/recipes/80-test_http.t

I don't know if there are other protocols involved. If there are, it would be useful to test them.

CMP itself does not involve any further protocols (while its data structures make use of CRMF and X509, which are formats, not protocols, so AFAICS do not play a direct role here).

On Tue, Mar 24, 2020 at 03:07:08AM -0700, David von Oheimb wrote:

A documentation/HOWTO for the OpenSSL fuzzing facility would be helpful here.

Have you looked at fuzz/README.md?
Kurt

Thanks @kroeckx for pointing at fuzz/README.md, which I had not noticed.
This explains how to fill fuzz/corpora/cmp/.
Yet fuzz/helper.py cmp has already been running for more than two days (on one CPU core), so far producing 13 MB data. Is there a way to see a forecast how much longer/more this is going to take?

Yet fuzz/helper.py cmp has already been running for more than two days (on one CPU core), so far producing 13 MB data. Is there a way to see a forecast how much longer/more this is going to take?

It will until run until you stop it. So just stop it, and add the
corpus.

It will until run until you stop it. So just stop it, and add the corpus.

Oh! This important detail seems not mentioned in the README.
Actually I have data from two runs: 13.2 MB from the long run I mentioned, which I just stopped,
and 3.6 MB from an earlier run which I had cancelled for other reasons.
Which one is preferred? I presume there should be a balance between completeness and data size. Here is a comparison with the data sizes of the already included fuzzers:
du fuzz/corpora/* | sort -n

960	fuzz/corpora/ct
1928	fuzz/corpora/conf
1996	fuzz/corpora/bndiv
2184	fuzz/corpora/asn1parse
2196	fuzz/corpora/bignum
3600	fuzz/corpora/cmp_old
7152	fuzz/corpora/cms
8208	fuzz/corpora/server
9128	fuzz/corpora/crl
9816	fuzz/corpora/client
10168	fuzz/corpora/x509
13284	fuzz/corpora/cmp
15836	fuzz/corpora/asn1

On Mon, Mar 30, 2020 at 12:41:10AM -0700, David von Oheimb wrote:

It will until run until you stop it. So just stop it, and add the corpus.

Oh! This important detail seems not mentioned in the README.
Actually I have data from two runs: 13.2 MB from the long run I mentioned, which I just stopped,
and 3.6 MB from an earlier run which I had cancelled for other reasons.
Which one is preferred?

I recommend that you try to minimize it, that is run:
./cmp x509 -merge=1 new-dir old-dir
Where new-dir is an empty directory. You can put all the files you
have in the old-dir.
Kurt

It will until run until you stop it. So just stop it, and add the corpus.

Oh! This important detail seems not mentioned in the README.
Actually I have data from two runs: 13.2 MB from the long run I mentioned, which I just stopped,
and 3.6 MB from an earlier run which I had cancelled for other reasons.
Which one is preferred? I presume there should be a balance between completeness and data size. Here is a comparison with the data sizes of the already included fuzzers:
du fuzz/corpora/* | sort -n

960	fuzz/corpora/ct
1928	fuzz/corpora/conf
1996	fuzz/corpora/bndiv
2184	fuzz/corpora/asn1parse
2196	fuzz/corpora/bignum
3600	fuzz/corpora/cmp_old
7152	fuzz/corpora/cms
8208	fuzz/corpora/server
9128	fuzz/corpora/crl
9816	fuzz/corpora/client
10168	fuzz/corpora/x509
13284	fuzz/corpora/cmp
15836	fuzz/corpora/asn1

I recommend that you try to minimize it, that is run: ./cmp x509 -merge=1 new-dir old-dir Where new-dir is an empty directory. You can put all the files you have in the old-dir.

Good to know, will do.
Should I also run AFL mentioned in the README?
 afl-fuzz -i fuzz/corpora/$FUZZER -o fuzz/corpora/$FUZZER/out fuzz/$FUZZER

BTW, the copy of my last response was a mistake - my browser view of this page was inconsistent.

Should I also run AFL mentioned in the README?

No, libfuzzer alone is fine.
Once it's merged, Google will run that fuzzer with multiple
fuzzers including AFL. I will then download their corpus as some
point and merge it.

I recommend that you try to minimize it, that is run:
./cmp x509 -merge=1 new-dir old-dir

Where new-dir is an empty directory.
You can put all the files you have in the old-dir.

This took about a day to complete, but apparently had no effect - new-dir is still empty :-(
Why to use the x509 parameter here? Maybe this is wrong.
Should I better use, e.g., this? ./cmp new-dir -merge=1 old-dir

On Tue, Mar 31, 2020 at 11:44:35PM -0700, David von Oheimb wrote:

I recommend that you try to minimize it, that is run:
./cmp x509 -merge=1 new-dir old-dir

Where new-dir is an empty directory.
You can put all the files you have in the old-dir.

This took about a day to complete, but apparently had no effect - new-dir is still empty :-(
Why to use the x509 parameter here? Maybe this is wrong.
Should I better use, e.g., this? ./cmp new-dir -merge=1 old-dir

It clearly should just have been:
./cmp -merge=1 new-dir old-dir
I assume you have an x509 dir, and it put things in the x509 dir.
Kurt

./cmp -merge=1 new-dir old-dir

I'm running this now, let's see how this goes ...

I assume you have an x509 dir, and it put things in the x509 dir.

Yes, fuzz/corpora/x509/ exists also over here,
but I had already checked: nothing new went in there.

Also
./cmp -merge=1 new-dir old-dir`

did not give any output and apparently terminated immediately, without effect.

In the meantime I've tentatively added the combined but non-merged/minimized data to fuzz/corpora/cmp/.
make tests TESTS="test_fuzz" V=1

now does include fuzz/corpora/cmp/ and passes.

The cmp data added just about 2.5 seconds to the overall time (which is some 80 seconds on my machine) the fuzz tests took.
I cannot judge if this is a good sign or not.

I just did a quick look at your fuzzer. Maybe you can pass
the msg to functions like:

OSSL_CMP_SRV_process_request()
OSSL_CMP_CTX_server_perform()

That is, write some basic applications that does something with
such a file.
I tried to minimize the corpus, and I had no problem with it:
$ ./fuzz/cmp -merge=1 fuzz/new/cmp fuzz/corpora/cmp/
INFO: Seed:<PHONE_NUMBER>
INFO: Loaded 1 modules   (183405 inline 8-bit counters): 183405 [0x1d99ea0, 0x1dc6b0d),
INFO: Loaded 1 PC tables (183405 PCs): 183405 [0x1dc6b10,0x20931e0),
MERGE-OUTER: 4136 files, 0 in the initial corpus
MERGE-OUTER: attempt 1
INFO: Seed:<PHONE_NUMBER>
INFO: Loaded 1 modules   (183405 inline 8-bit counters): 183405 [0x1d99ea0, 0x1dc6b0d),
INFO: Loaded 1 PC tables (183405 PCs): 183405 [0x1dc6b10,0x20931e0),
INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 1048576 bytes
MERGE-INNER: using the control file '/tmp/libFuzzerTemp.1357149.txt'
MERGE-INNER: 4136 total files; 0 processed earlier; will process 4136 files now
#1      pulse  cov: 438 exec/s: 0 rss: 48Mb
#2      pulse  cov: 438 exec/s: 0 rss: 50Mb
#4      pulse  cov: 439 exec/s: 0 rss: 50Mb
#8      pulse  cov: 439 exec/s: 0 rss: 50Mb
#16     pulse  cov: 527 exec/s: 0 rss: 50Mb
#32     pulse  cov: 655 exec/s: 0 rss: 50Mb
#64     pulse  cov: 696 exec/s: 0 rss: 51Mb
#128    pulse  cov: 752 exec/s: 0 rss: 52Mb
#256    pulse  cov: 1462 exec/s: 0 rss: 56Mb
#512    pulse  cov: 1828 exec/s: 512 rss: 61Mb
#1024   pulse  cov: 1863 exec/s: 1024 rss: 69Mb
#2048   pulse  cov: 1987 exec/s: 409 rss: 87Mb
#4096   pulse  cov: 1987 exec/s: 341 rss: 162Mb
#4136   DONE  cov: 1987 exec/s: 344 rss: 166Mb
MERGE-OUTER: succesfull in 1 attempt(s)
MERGE-OUTER: the control file has 448086 bytes
MERGE-OUTER: consumed 0Mb (53Mb rss) to parse the control file
MERGE-OUTER: 1268 new files with 8138 new features added; 1987 new coverage edges
I've put that at https://www.roeckx.be/cmp.tar.gz
Kurt

I tried to minimize the corpus, and I had no problem with it:
$ ./fuzz/cmp -merge=1 fuzz/new/cmp fuzz/corpora/cmp/

Argh, meanwhile I found that in my builds of those excecutables like fuzz/cmp were garbled,
which explains their weird behavior.
I suspect they were (wrongly) produced by my experiments with AFL or the like.
How can one produce them correctly, as you did?
With a normal configuration they do not show up as make targets.

BTW, would be generally very helpful in my view if Configure (and thus also config) automatically did a make clean or the like to avoid inconsistencies with artifacts of earlier builds in the same directory.

I've put that at https://www.roeckx.be/cmp.tar.gz Kurt

Thanks! I've replaced fuzz/corpora/cmp/* with that compressed data.
The fuzz tests also succeed with this data over here.

On Wed, Apr 01, 2020 at 03:47:57AM -0700, David von Oheimb wrote:

I tried to minimize the corpus, and I had no problem with it:
$ ./fuzz/cmp -merge=1 fuzz/new/cmp fuzz/corpora/cmp/

Argh, meanwhile I found that in my builds of those excecutables like fuzz/cmp were garbled,
which explains their weird behavior.
I suspect they were (wrongly) produced by my experiments with AFL or the like.
How can one produce them correctly, as you did?
With a normal configuration they do not show up as make targets.

I did:
CC=clang-9 ./config enable-fuzz-libfuzzer --with-fuzzer-lib=/usr/lib/llvm-9/lib/clang/9.0.1/lib/linux/libclang_rt.fuzzer-x86_64.a -DPEDANTIC enable-asan enable-ubsan no-shared -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=fuzzer-no-link enable-ec_nistp_64_gcc_128 -fno-sanitize=alignment enable-weak-ssl-ciphers enable-rc5 enable-md2 enable-ssl3 enable-ssl3-method enable-nextprotoneg --debug
LDCMD=clang++-9 make -j4
You might need to change the version of clang.
The "enable-fuzz-libfuzzer" will change the Makefile to generate the
fuzz/cmp file.
Kurt

I see. I tried your new version of the config invocation
and found that I had to remove -Wa,--noexecstack.
My clang(++) version is 7.
Now I get on LDCMD=clang++ make fuzz/cmp:
rm -f fuzz/cmp
${LDCMD:-gcc} -pthread -m64 -fno-omit-frame-pointer -g  -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -fstack-protector -fno-omit-frame-pointer -std=gnu90 -L.   \
	-o fuzz/cmp \
	fuzz/cmp-bin-cmp.o fuzz/cmp-bin-driver.o \
	-lcrypto -ldl -pthread
/usr/bin/ld: /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crt1.o: in function `_start':
(.text+0x20): undefined reference to `main'

Yet maybe I won't strictly need that fuzz/cmp executable.

(.text+0x20): undefined reference to `main'

Are you sure you passed the --with-fuzzer-lib? The library
provides the main function.

Now the corpora data merging works, with very similar result as your :-)

I've just extended fuzz/README.md according to the lessons I've learned today.

I just did a quick look at your fuzzer. Maybe you can pass the msg to functions like:

OSSL_CMP_SRV_process_request()
OSSL_CMP_CTX_server_perform()

That is, write some basic applications that does something with such a file.

I've extended fuzz/cmp.c with CMP client and server stubs trying to use the fuzzed CMP msg.
Is this what you meant?
Still the fuzzing went pretty fast and succeeded.

On Wed, Apr 01, 2020 at 07:13:03AM -0700, David von Oheimb wrote:

I've extended fuzz/cmp.c with CMP client and server stubs trying to use the fuzzed CMP msg.
Is this what you meant?

Yes. The coverage went up, it's finding lots of new inputs now.
(I have it running here.)

Pleased to hear. I'm going to further strengthen this by adapting the client and server state such that the messages can get past the initial protection/nonce/transactionID checks, which currently in all likelihood will block all input messages right away.

Examples of real files could also be very useful

Anyway, the FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION define can be
used to remove such checks, or ignore the result of the check.

@kroeckx, as you suggested I added to the corpora various "real" CMP messages (from other tests etc.) exemplifying all (supported) CMP message types.
I also was able to make good use of your FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION hint.
I've made sure and verified manually that, after "dismantling" some checks in this way,

for each supported request message type the server skeleton handles it
for each supported response message type the client follows some path accepting it.

Doing so I found and fixed a few cases there the error reason codes were not fully adequate.
I did not encounter any severe misbehavior of the client nor the server side.
So in my view the CMP fuzzing has become reasonably strong and is successful.
Consequently I've just removed the "WIP:" from the title of this PR.
Thanks Kurt for shepherding this development!

The CIFuzz run failed, and I don't know how to fix
FileNotFoundError: [Errno 2] No such file or directory: '/github/workspace/out/oss_fuzz_latest/openssl/cmp'

I assume the problem is that it's a new fuzzer, and that it will
fix itself when it's merged. I suggest to ignore it.
I've been running it with the following patch applied:
--- a/fuzz/cmp.c
+++ b/fuzz/cmp.c
@@ -15,9 +15,14 @@
#include <openssl/cmp.h>
#include <openssl/err.h>
#include "fuzzer.h"
+#include "rand.inc"
int FuzzerInitialize(int *argc, char ***argv)
{

OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL);
ERR_clear_error();
CRYPTO_free_ex_index(0, -1);
FuzzerSetRand();
return 1;
}

@@ -50,6 +55,7 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len)
OSSL_CMP_CTX *client_ctx = OSSL_CMP_CTX_new();
     i2d_OSSL_CMP_MSG_bio(out, msg);

   ASN1_item_print(out, (ASN1_VALUE *)msg, 4, ASN1_ITEM_rptr(OSSL_CMP_MSG), NULL);
   BIO_free(out);

   if (client_ctx != NULL)

And currently get:
#13522  INITED cov: 5852 ft: 20834 corp: 2428/1317Kb exec/s: 540 rss: 586Mb
I merged the existing files from the test suite, which greatly
increased the coverage. The fuzzer has found a lot of new coverage
(cov), covering a lot of new function since I've added the samples
from the test suite. If you can share more real files, I would love
to merge them too.
I'm not sure FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is needed, I
think the fuzzer can actually find the correct input. It is at
least finding lots of inputs without it.

I've put my current corpus at:
https://www.roeckx.be/cmp.tar.gz

I've merged your new corpus, and now I'm finding lots of new
inputs again. I will let this run for an other day and send you a
new corpus again.

It seems that your new version is now writing all kind of error
messages to stderr. I'm not sure why it's doing that, but it
should not output anything.

I only seem to be getting all the error messages on stderr when
FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined. I don't see
why FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION should have that
effect, so I assume it's non-modified code that does that.
In any case, the things you did with
FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION seem to improve the
coverage even more, so those changes look good.

And it found the first issue, I have a NULL pointer dereference.
==1681722==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x000000000006 (pc 0x0000006820ac bp 0x7fff2becb3a0 sp 0x7fff2becb350 T1681722)
==1681722==The signal is caused by a READ memory access.
==1681722==Hint: address points to the zero page.
#0 0x6820ab in asn1_string_get_int64 crypto/asn1/a_int.c:325:10
#1 0x681fe9 in ASN1_INTEGER_get_int64 crypto/asn1/a_int.c:515:12
#2 0x4c96d8 in ossl_cmp_asn1_get_int crypto/cmp/cmp_asn.c:195:10
#3 0x4dcb75 in suitable_rid crypto/cmp/cmp_msg.c:865:12
#4 0x4dce22 in ossl_cmp_certrepmessage_get0_certresponse crypto/cmp/cmp_msg.c:925:13
#5 0x4e9779 in check_msg_valid_cert_3gpp crypto/cmp/cmp_vfy.c:329:13
#6 0x4e9dc2 in check_msg_with_certs crypto/cmp/cmp_vfy.c:370:25
#7 0x4e98e3 in check_msg_all_certs crypto/cmp/cmp_vfy.c:399:9
#8 0x4e79e7 in check_msg_find_cert crypto/cmp/cmp_vfy.c:462:16
#9 0x4e6fbc in OSSL_CMP_validate_msg crypto/cmp/cmp_vfy.c:612:17
#10 0x4e8be2 in ossl_cmp_msg_check_received crypto/cmp/cmp_vfy.c:662:14
#11 0x4cc12e in send_receive_check crypto/cmp/cmp_client.c:186:15
#12 0x4cf1a3 in OSSL_CMP_exec_GENM_ses crypto/cmp/cmp_client.c:884:10
#13 0x42bbfe in cmp_client_process_response fuzz/cmp.c:77:15
#14 0x42b8b9 in FuzzerTestOneInput fuzz/cmp.c:162:13
#15 0x42c3f4 in LLVMFuzzerTestOneInput fuzz/driver.c:28:12
#16 0x4684b1 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (fuzz/cmp+0x4684b1)
#17 0x467cf5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) (fuzz/cmp+0x467cf5)
#18 0x469f97 in fuzzer::Fuzzer::MutateAndTestOne() (fuzz/cmp+0x469f97)
#19 0x46acb5 in fuzzer::Fuzzer::Loop(std::Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocatorfuzzer::SizedFile >&) (fuzz/cmp+0x46acb5)
#20 0x458a98 in fuzzer::FuzzerDriver(int*, char***, int ()(unsigned char const, unsigned long)) (fuzz/cmp+0x458a98)
#21 0x481ee2 in main (fuzz/cmp+0x481ee2)
#22 0x7fe108d78e0a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26e0a)
#23 0x409c89 in _start (fuzz/cmp+0x409c89)
UndefinedBehaviorSanitizer can not provide additional info.
==1681722==ABORTING
MS: 1 ChangeBit-; base unit: bf78c945dbccc4f52404eb701ebf3683ff2f9fb0
artifact_prefix='./'; Test unit written to ./crash-2727345000496842caca113d71a529f694da6536
File at:
https://www.roeckx.be/crash-2727345000496842caca113d71a529f694da6536

Thanks @kroeckx for all new comments!

I only seem to be getting all the error messages on stderr when FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined. I don't see why FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION should have that effect, so I assume it's non-modified code that does that. In any case, the things you did with FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION seem to improve the coverage even more, so those changes look good.

I've used FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION mostly to let the CMP client and server code ignore the results of various validity checks on incoming messages: on the message protection (signature- or password-based), various generic header field values (CMP version, transaction ID, and nonces), body type consistency, and the proof-of-possession (POPO) signature in cert requests.
In order to make the client to proceed where according to its current state (in the CMP context) it would normally return an error, e.g, on a missing private key missing, I've also made some use of  FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION and added some CMP option settings at the beginning of cmp_client_process_response() in fuzz/cmp.c.

I've put my current corpus at: https://www.roeckx.be/cmp.tar.gz

I tried amending the PR with that data, but apparently it was already included.
I added to the PR the patch you mentioned above.

I tried amending the PR with that data, but apparently it was already included.

The one I have now is much larger, I'll update it once it stops
finding new things for a while. The last new function it found
was PACKET_get_net_2, which I don't see being used outside ssl ...

Before this can move on, I think at least the follow things need
to be fixed:

There is a memory leak. It looks like the OSSL_CMP_MSG_dup() in
transfer_cb() is never freed.
The NULL pointer dererence that ossl_cmp_asn1_get_int caused

I would also like to see all the error messages that are printed
to stderr are no longer printed. The library should not be printing
errors to stderr, it's up to the application to decide what to do
with the error messages.
I think only the memory leak should actually get fixed in this PR,
the rest should probably be done in other PRs.

Here is a crash with a different profile:
https://www.roeckx.be/crash-57e4fbcd139ec37e87aca0a695c194e68f1abcb7
#0 0x5b37f0 in X509_NAME_cmp crypto/x509/x509_cmp.c:172:10
#1 0x4ce983 in OSSL_CMP_exec_RR_ses crypto/cmp/cmp_client.c:835:13
#2 0x42bbe0 in cmp_client_process_response fuzz/cmp.c:74:15
#3 0x42b8b9 in FuzzerTestOneInput fuzz/cmp.c:162:13

I'm not sure FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is needed, I think the fuzzer can actually find the correct input. It is at least finding lots of inputs without it.

I'm meanwhile sure that FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is necessary for significantly improving completeness since the fuzzer would have little chance guessing symmetric and private keys needed for protecting CMP messages in a way the (unmodified) CMP protection checker would accept.
I also cannot imagine that it could guess transaction IDs and nonces.

And it found the first issue, I have a NULL pointer dereference.
==1681722==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x000000000006 (pc 0x0000006820ac bp 0x7fff2becb3a0 sp 0x7fff2becb350 T1681722) ==1681722==The signal is caused by a READ memory access. ==1681722==Hint: address points to the zero page. #0 0x6820ab in asn1_string_get_int64 crypto/asn1/a_int.c:325:10 #1 0x681fe9 in ASN1_INTEGER_get_int64 crypto/asn1/a_int.c:515:12 #2 0x4c96d8 in ossl_cmp_asn1_get_int crypto/cmp/cmp_asn.c:195:10 #3 0x4dcb75 in suitable_rid crypto/cmp/cmp_msg.c:865:12 #4 0x4dce22 in ossl_cmp_certrepmessage_get0_certresponse crypto/cmp/cmp_msg.c:925:13 #5 0x4e9779 in check_msg_valid_cert_3gpp crypto/cmp/cmp_vfy.c:329:13

BTW, how can I reproduce such crashes?

The NULL pointer dererence that ossl_cmp_asn1_get_int caused

I believe this would have already been fixed by #11448, which unfortunately is not yet reviewed and merged.
For simplicity and such that we can proceed this fuzzing PR I've cerry-picked the essential commit https://github.com/openssl/openssl/pull/11448/commits/1da812778f9098286b8f069391106d0d2eb05017 of that PR to this one.

There are some situations where this leads the client to output errors via OSSL_CMP_CTX_print_errors(ctx) or the like. If this is a problem I can of course suppress that.

I've meanwhile suppressed such error queue output while fuzzing.

Here is a crash with a different profile: https://www.roeckx.be/crash-57e4fbcd139ec37e87aca0a695c194e68f1abcb7
#0 0x5b37f0 in X509_NAME_cmp crypto/x509/x509_cmp.c:172:10
#1 0x4ce983 in OSSL_CMP_exec_RR_ses crypto/cmp/cmp_client.c:835:13
#2 0x42bbe0 in cmp_client_process_response fuzz/cmp.c:74:15
#3 0x42b8b9 in FuzzerTestOneInput fuzz/cmp.c:162:13

This must have been an artifact due to insufficient ctx->oldCert initialization in cmp_client_process_response() in fuzz/cmp.c - fixed.

Before this can move on, I think at least the follow things need to be fixed: - There is a memory leak. It looks like the OSSL_CMP_MSG_dup() in transfer_cb() is never freed.

I had included the dup() to prevent double frees that would occur during fuzzing.
I was aware of that potential fuzzing mem leak artifact but had hoped that this would have been harmless/ignored.
I've meanwhile solved this issue differently, by guarding all respective OSSL_CMP_MSG_free() calls in crypto/cmp/cmp_client.c with FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION, which is a bit ugly but more to the point.

I believe this would have already been fixed by #11448, which unfortunately is not yet reviewed and merged.
For simplicity and such that we can proceed this fuzzing PR I've cerry-picked the essential commit 1da8127 of that PR to this one.

Thanks @mattcaswell for quickly reviewing&approving #11448.
Thus I've reverted the cherry-pick done here a little earlier,
keeping just the fuzzing-related suppression of error queue printing that would (re-)appear here when rebasing on that PR after it has been merged (planned for tomorrow noon CEST).

BTW, how can I reproduce any (potential future) such crashes you report?

As the README says, you run: cmp-test $file

I've meanwhile suppressed such error queue output while fuzzing.

I'm not sure how you did that, but if it's only suppressed while fuzzing, the solution seems wrong to me.
(I don't see any update in this PR?)

(I don't see any update in this PR?)

Sorry, my last push went by mistake not to the right repo. I've just corrected that.

BTW, how can I reproduce any (potential future) such crashes you report?

As the README says, you run: cmp-test $file

Ah, indeed!
This way I've been able to confirm that crash and also that the fix done in commit 03f6514f0fab6 was sufficient: when building from that state (or one of the later ones before the reversal done in commit cbb46bddbd43) the crash disappears.

I've meanwhile suppressed such error queue output while fuzzing.

I'm not sure how you did that, but if it's only suppressed while fuzzing, the solution seems wrong to me.

I'm not sure if I used the right wording in the sentence you quoted here.
What I meant is that I've guarded the error output statements as follows:
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
    OSSL_CMP_CTX_print_errors(ctx);
#endif

So I'm still seeing a memory leak, now it says it's the
d2i_OSSL_CMP_MSG_bio() call.

Why don't you set up a callback that does nothing with the error messages?

Why don't you set up a callback that does nothing with the error messages?

Good point! Done.

So I'm still seeing a memory leak, now it says it's the d2i_OSSL_CMP_MSG_bio() call.

Hmm, I cannot spot manually why this happens and unfortunately can't get any mem leak errors
although I configure with enable-crypto-mdebug enable-crypto-mdebug-backtrace --debug
and run the tests with OPENSSL_DEBUG_MEMORY=on.

BTW, is there a way of restricting the fuzz tests to CMP? I usually call
 make tests TESTS="test_fuzz" V=1

which takes pretty long mostly because of the ASN.1 fuzz tests.

BTW, is there a way of restricting the fuzz tests to CMP? I usually call
 make tests TESTS="test_fuzz" V=1

which takes pretty long mostly because of the ASN.1 fuzz tests.

It looks like recipes/99-test_fuzz.t doesn't support that.
You can just run: ./fuzz/cmp-test fuzz/corpora/cmp/
If built using asan, it should report the memory leaks.

I suggest that you remove your changes to fuzz/asn1.c, I don't
think they are useful, just slow things down.

So I've updated https://www.roeckx.be/cmp.tar.gz

I suggest that you remove your changes to fuzz/asn1.c, I don't think they are useful, just slow things down.

All right, removed those.

So I've updated https://www.roeckx.be/cmp.tar.gz

Thanks, I've included them.

BTW, is there a way of restricting the fuzz tests to CMP? I usually call
make tests TESTS="test_fuzz" V=1
which takes pretty long mostly because of the ASN.1 fuzz tests.

It looks like recipes/99-test_fuzz.t doesn't support that.
You can just run: ./fuzz/cmp-test fuzz/corpora/cmp/

If built using asan, it should report the memory leaks.

Good hints!
This way I've been able to find the mem leak. It was a bit tricky because only part of a msg structure was not freed. Fixed in fuzz/cmp.c.
Since I found that during fuzz tests also the CMP server side produced error queue outputs I disabled them as well (using the same no-op callback as for the client side).

So that still leaves the:
crypto/x509/x509_cmp.c:172:13: runtime error: member access within null pointer of type 'const X509_NAME' (aka 'const struct X509_name_st')

I find it strange that you don't do the OSSL_CMP_MSG_free() in
case of FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION. It looks like
an API problem to me.

I find it strange that you don't do the OSSL_CMP_MSG_free() in case of FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION. It looks like an API problem to me.

I agree that it smells like that. Yet was due to my so far ad-hoc use (with forth and back changes) of the CMP client API in fuzz/cmp.c.
After having a close look I've found a much simpler and cleaner solution.
Good that you brought this up again.

So that still leaves the:

crypto/x509/x509_cmp.c:172:13: runtime error: member access within null pointer of type 'const X509_NAME' (aka 'const struct X509_name_st')

Hmm, I have not seen this in the above discussion and cannot reproduce it.
Still I had a look at the source location you provided and I'm pretty sure that this is because some comparison of certs is done where the second does not have an issuer name.
The trivial 'test' cert I provided in fuzz/cmp.c:
    ctx->oldCert = X509_new(); /* satisfy crm_new() and ossl_cmp_rr_new() */

does not have any subject, issuer, serial number, etc, and functions like X509_cmp() do not safely deal with that (exceptional, but not outruled) case.
I've provided a tentative fix of a couple such potential NULL situations in crypto/x509/x509_cmp.c.
Does this fix the crash you obtained?

Does this fix the crash you obtained?

I thought I pointed to such a file before. But I can't reproduce
any of the reported issues I had before with the current version.
I'm wondering why there are still a few:
+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
OSSL_CMP_CTX_print_errors(ctx);
+#endif

I thought I pointed to such a file before. But I can't reproduce any of the reported issues I had before with the current version.

Meanwhile I think I've found the crash you were referring to (it was folded away by this GitHub page): https://www.roeckx.be/crash-57e4fbcd139ec37e87aca0a695c194e68f1abcb7
Then that crash must already have been fixed by the 3GPP-related fixup commit a1e4c8ef8125bfff403d49d60a625f75b3074a79 I had mentioned. This was merged yesterday and I've rebased this PR on it, which seems to explain why you now cannot reproduce it either.
Despite of this, WDYT about the additional tentative fix commit a7539162ce9fee9840f66d68ffc9dc981d30dd42
which makes some functions in x509_cmp.c more robust?

I'm wondering why there are still a few:

+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
    OSSL_CMP_CTX_print_errors(ctx);
+#endif

Oops, they must have crept in again when rebasing. Got rid of them.

I think all the changes look good, but I would like someone else to review it.

I think all the changes look good, but I would like someone else to review it.

Thanks again Kurt for your constant and very constructive feedback on this.
Any other OMC member willing to do the official review?
Maybe the code contains an Easter egg :wink:

Any other OMC member willing to do the official review?

It's an OTC member that you need.

Pinging for an OTC member review.
It's actually not very much code, and @kroeckx already made sure that from the fuzzing perspective it makes much sense.

Travis failure looks relevant

Looks good. A couple of nits I spotted below.

Pleased to hear!
I've just fixed the remaining (minor) issues. The respective commits can be found in https://github.com/mpeylo/cmpossl/tree/cmp_fuzzer_reviewed

How do you intend to structure the commits - and with what commit message?

I've meanwhile rebased and partly squashed this PR.
The new commit structure is my proposal.

24 hours has passed since 'approval: done' was set, but this PR has failing CI tests.  Once the tests pass it will get moved to 'approval: ready to merge' automatically, alternatively please review and set the label manually.

Merged - thanks @kroeckx and @mattcaswell

This PR seems to have broken Travis. All master builds have been red since it was merged.

Hmm, are you sure the Travis failures are due to merging this PR?
Can you please provide more detail supporting this?
For instance, #4277 which I rebased to master today,
fails at a point unrelated to CMP and fuzzing:
 Looks like you failed 40 tests of 54.
30-test_evp_fetch_prov.t ...........
Dubious, test returned 40 (wstat 10240, 0x2800)

according to https://travis-ci.org/github/openssl/openssl/jobs/677138716

I'm looking at this build:
https://travis-ci.org/github/openssl/openssl/jobs/676658702
Which fails in cmp_vfy_test:
    # ERROR: (int) 'fixture->expected == ossl_cmp_verify_popo(fixture->msg, fixture->additional_arg)' failed @ test/cmp_vfy_test.c:101
    # [0] compared to [1]
    not ok 2 - test_verify_popo_bad

This is from the first build after commit e0331e - and is the first point that travis goes red. I think there are some subsequent other problems from later commits that are unrelated to this.

I see test failures locally in cmp_vfy_test if I use -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION, as is done in the build in question. Although, strangely, the errors I see are slightly different to the ones in the failing build.

Thx for the details; now I understand what's going on.
I need to disable some at least the above test in case -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
(while I wouldn't have expected that the normal tests are run while that symbol is defined).
I'll provided a fixup PR shortly...

Please run the extended tests in your fixup PR - the failing job only gets run when extended tests are enabled.

How to run the extended tests?

Add a line in the commit message of the last commit that says:
[extended tests]

Done in #11585


Tests and Storybook entry for the Popover component

SUMMARY
Adds tests for the Popover component and a storybook entry with controls.

@junlincc @rusackas


remove old rules as we have now a new plan

fixed

Coverage increased (+0.4%) to 28.276% when pulling 3fda3d09b85d9ce0dd994dc9e4c474a25bb5d668 on sylvestre-patch-2 into 81786d3e9f4e18dc24b0f501300764dbb21ad1b3 on master.


(GH-996) Use Amazon Linux 2018.03 instead of 2017.03 as it is EOL

Though Amazon does not announce end of life (EOL) for its releases, it
does encourage you to use the latest releases which include versions 2
and 2018.03.
Remove Amazon 2017.03 and add 2018.03

Released in v2.56.0

Released in v2.56.0


main.jsbundle does not exist.

Description
Using expo, but can't build correctly, with fastlane error. Tried all sorts of things, none helped. Had an open issue at expo, but they closed without much help.
Fastlane logs:
bb2373b4-a0f4-4e9b-968c-0d38a6a26516-run-fastlane.txt
Any ideas?
Version
70.0 (expo 47)
Output of npx react-native info
System:
OS: Linux 5.15 Ubuntu 22.04.1 LTS 22.04.1 LTS (Jammy Jellyfish)
CPU: (4) x64 Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
Memory: 10.05 GB / 15.54 GB
Shell: 5.1.16 - /bin/bash
Binaries:
Node: 16.18.1 - ~/.nvm/versions/node/v16.18.1/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v16.18.1/bin/yarn
npm: 9.1.1 - ~/.nvm/versions/node/v16.18.1/bin/npm
Watchman: Not Found
SDKs:
Android SDK: Not Found
IDEs:
Android Studio: Not Found
Languages:
Java: Not Found
npmPackages:
@react-native-community/cli: Not Found
react: 18.1.0 => 18.1.0
react-native: 0.70.5 => 0.70.5
npmGlobalPackages:
react-native: Not Found
Steps to reproduce
On a terminal, use:
expo init   /Make sure to use v47/
Use the dependencies in this package.json:
package json.txt
install pods, etc.
configure eas (base config)
use "eas build -p ios"
Snack, code example, screenshot, or link to a repository
https://snack.expo.dev/@gkyomen/fastlane-bug

hi there! I don't see an issue about this particular topic on the expo repo, I only see this unrelated question: https://github.com/expo/expo/issues/20005
see this related comment: https://github.com/expo/expo/issues/20001#issuecomment-1320922419
if the issue persists, please create a new issue on https://github.com/expo/expo/issues with a minimal reproducible example

@GKyomen Hi there! Did you manage to solve this issue? I'm stuck

i am also stuck


Remove Python 3.8 support

Now that 3.8 is EoL, we can finally update to use 3.9's generic syntax!

@dbanty I was curious about the need to translate type into type_. Since type is a soft keyword, is this truly neccessary?

https://peps.python.org/pep-0695/#generic-type-alias

The type keyword is a new soft keyword. It is interpreted as a keyword only in this part of the grammar. In all other locations, it is assumed to be an identifier name.

I think the generated client would be easier to use if we kept fields named type as type? But perhaps I'm missing a bigger reason why this was done?

@eli-bl is correct. The better solution would be to change the local variable naming, but it's a much bigger change.
Sticking with Type causes popular linters to scream, and I don't want to litter the generated code with exceptions.
type specifically causes so many conflicts in so many languages 😭. If you have control over the API I recommend kind


Leaked instances upon editor exit

Since installing better-terrain into my project via the asset library I see leaked instances upon editor exit. This did not happen prior to installing better-terrain. I am using Godot v4.2.stable.official.46dc27791 on Ubuntu 22.04.
My first clue at the leaks were these messages from Godot whenever I quit the editor
ERROR: 48 RID allocations of type 'P12GodotShape2D' were leaked at exit.
PulseAudio: context terminated
ERROR: 9 RID allocations of type 'N10RendererRD14TextureStorage7TextureE' were leaked at exit.
ERROR: 1 RID allocations of type 'N10RendererRD14TextureStorage13CanvasTextureE' were leaked at exit.
ERROR: 108 RID allocations of type 'N18RendererCanvasCull4ItemE' were leaked at exit.
WARNING: 15 RIDs of type "Texture" were leaked.
     at: finalize (drivers/vulkan/rendering_device_vulkan.cpp:9623)
ERROR: 55 RID allocations of type 'PN18TextServerAdvanced22ShapedTextDataAdvancedE' were leaked at exit.
ERROR: 17 RID allocations of type 'PN18TextServerAdvanced12FontAdvancedE' were leaked at exit.
ERROR: 1 RID allocations of type 'PN18TextServerAdvanced27FontAdvancedLinkedVariationE' were leaked at exit.
WARNING: ObjectDB instances leaked at exit (run with --verbose for details).

Running the godot editor with the --verbose flag reveals the following. What's listed here is just a subset of the leaked instance messages that contained resource paths relating to better-terrain.
Leaked instance: CompressedTexture2D:-9173452009930430530 - Resource path: res://addons/better-terrain/icons/MatchTiles.svg
Leaked instance: StyleBoxFlat:-9173401432395552833 - Resource path: res://addons/better-terrain/editor/TerrainEntry.tscn::StyleBoxFlat_rohyw
Leaked instance: CompressedTexture2D:-9173444313349036096 - Resource path: res://addons/better-terrain/icons/MatchVertices.svg
Leaked instance: GDScript:-9173422323116480575 - Resource path: res://addons/better-terrain/editor/TerrainEntry.gd
Leaked instance: CompressedTexture2D:-9173436616767641662 - Resource path: res://addons/better-terrain/icons/NonModifying.svg
Leaked instance: CompressedTexture2D:-9173407479709505597 - Resource path: res://addons/better-terrain/icons/Decoration.svg
Leaked instance: StyleBoxFlat:-9173402531907180601 - Resource path: res://addons/better-terrain/editor/TerrainEntry.tscn::StyleBoxFlat_3pdcc
Leaked instance: StyleBoxFlat:-9173400882639738936 - Resource path: res://addons/better-terrain/editor/TerrainEntry.tscn::StyleBoxFlat_xa0fl
Leaked instance: StyleBoxFlat:-9173400332883925047 - Resource path: res://addons/better-terrain/editor/TerrainEntry.tscn::StyleBoxFlat_b4rkm
Leaked instance: ImageTexture:-9170821428360973754 - Resource path:
Leaked instance: ConvexPolygonShape2D:-9163080866501429416 - Resource path:
Leaked instance: TileData:60291720109160287
Leaked instance: TileData:60290620597532513
Leaked instance: TileSetAtlasSource:-9163083065524684958 - Resource path: res://scene/level/stage1_pumpkinpatch/pumpkinpatch_tileset.tres::TileSetAtlasSource_dwpcm
Leaked instance: CompressedTexture2D:-9163088013327009949 - Resource path: res://asset/tilesets/pumpkin_patch/pumpkinpatch_floor_tileset.png

I'll take a look at this soon. It's probably due to holding references after the editor tidies up.

Fixed by commit 825dd0ebf5ea5f867b29d3f9ed39fb569cb93118

Fix available in asset library version.


remove networking.DisableWildcardCertLabelKey

Operators choose the label key to use in their selectors - so the constant is no longer necessary

/lgtm