[BUG] NVTabular data loader for TensorFlow validation is slow

Describe the bug
Using NVTabular data loader for TensorFlow for validation with criteo dataset is slow:
    validation_callback = KerasSequenceValidater(valid_dataset_tf)
    history = model.fit(train_dataset_tf,
                        epochs=EPOCHS,
                        steps_per_epoch=20, callbacks=[validation_callback])

Training : 2min for 2288 steps
Validation: Estimated 55min for 3003 steps
Same batch-size, dataset, etc. ... The validation dataset is 1.3x bigger, but iterating through the validation dataset takes 27x more time than for training.
Steps/Code to reproduce bug
An example is provided here: https://github.com/bschifferer/NVTabular/blob/criteo_tf_slow/examples/criteo_tensorflow_slow.ipynb
You notice that iterating over the training dataset takes in average ~1sec per 10 batches but it takes 4-6s per 10 batches in the validation dataset.
Expected behavior
Validation loop should be similar fast than training loop
Additional context
There are multiple hypothesis and tests:

This behavior can be observed by just iterating over the dataset and execute the forward-pass of the model
If we switch training/validation dataloader, then the validation dataloader is fast and the training dataloader is slow. Meaning, that a iteration over the 2nd data loader. Hypothesis is that the GPU memory is not released from the 1st data loader and blocks the pipeline
If we remove the forward-pass of the model in the loop, then both iterations are fast. It has probably something to do with moving the data to the TensorFlow model
I tried out using tf.keras.backend.clear_session() between the iterations, but did not help
I tried out between the iterations

from numba import cuda
cuda.select_device(0)
cuda.close()

but resulted in an error

I tried out to use separate subprocesses, but did not improve performance

@bschifferer I guess your hypothesis the GPU memory is not released from the 1st data loader and blocks the pipeline makes sense.  AFAIK, there is no step/script to release GPU memory.

@jperez999 we think this is happening in the TF dataloader only.  @bschifferer will confirm by testing PyTorch.  Can you take a look please.

@bschifferer I was unable to reproduce your results. I ran this on a V100 32gb GPU and I got the following output for each of the dataloader analysis runs...

None of my runs experience the slowdown that should be captured in these runs.
The only change I made to your notebook was to update the input path and activated preprocessing.

@jperez999 - thanks for testing. I still have the bug.
I used the latest nvtabular:0.3 container
docker run --gpus 1 --cap-add SYS_PTRACE -it -p 8000:8000 -p 8888:8888 -v /raid/:/raid/ -v /workspace:/workspace nvcr.io/nvidia/nvtabular:0.3 /bin/bash
GPU:

Versions:
nvtabular: 0.2.0+66.gbc91a03
cudf: 0+untagged.1.ga6296e3
tensorflow: 2.5.0-dev20201121
rmm: has no version call
python 3.7.8
BUG:

@jperez999 if I run it on NGC, I do NOT have the same behavior/bug.

It is the same container. I do not have raid system their either. Is this related to Tesla vs. Quadro?

@bschifferer @jperez999 I am seeing similar behavior on NGC and on DGX06 with single V100-32 GB for validation with my code using full criteo dataset. Validation is very slow, and the strange part is that validation auc metric is not even print out  after training is done, even though I set it in the callbacks as:
validation_callback = KerasSequenceValidater(dataset)
model.fit(train_dataset, epochs=1, steps_per_epoch=100, callbacks=callbacks)

I tested the same code with only one day criteo set (day_0.parquet) and I can get the validation metric printed out after training. But validation is still slow.

@rnyak, can we get a full report on this behavior your seeing (i.e. get us environment information) along with testing output. I think this may have to do with spilling and the size restraints on your instance on ngc. Also can you verify that you were running the 0.16 cudf release... I think 0.2 was locked to cudf 0.15
@bschifferer ok if you are not hitting this on NGC, I think this may have to do with the amount of host memory and the spilling occurring during dataloading... Going to run some testing to see if I can see this behavior on my end and will report back.

@jperez999 thanks for looking into that. I switched to nvidia/nvtabular:0.3 image on NGC. So the conda environment in NVT image is: /opt/conda/envs/rapids. This is a 2x V100-32 GB instance on NGC.
cudf version: 0+untagged.1.ga6296e3
my ngc job submission script is:
ngc batch run --name "tfdlrm_nvt" --preempt RUNONCE --ace nv-us-west-2 --instance dgx1v.32g.2.norm --commandline "pip install ipykernel && python -m ipykernel install --user --name rapids --display-name rapids && pip install jupyterlab; jupyter lab --ip=<IP_ADDRESS> --allow-root --no-browser --NotebookApp.token='' --notebook-dir=/ --NotebookApp.allow_origin='*' & date; sleep 10d" --result /result --image "nvidia/nvtabular:0.3" --org nvidian --team prj-recsys --datasetid xxx:/dataset/ --workspace xxxxx:/workspace:RW --port 6006 --port 8787 --port 8888

I am using accelerating-tensorflow.ipynb as example notebook with full criteo dataset.
If I run the notebook with validation set, my output is as below (please note that - val_loss: xxx - val_auroc: xxx  results are not printed out but it should be). Also  wall time is ~17 min.
Embedding parameter count: 101176680
Non-embedding parameter count: 2747145
[<callbacks.ThroughputLogger object at 0x7f13d0149f10>, <tensorflow.python.keras.callbacks.TensorBoard object at 0x7f13d01f8650>, <nvtabular.loader.tensorflow.KerasSequenceValidater object at 0x7f13d0046ad0>]
200/200 [==============================] - 196s 682ms/step - loss: 0.1610 - auroc: 0.6639
CPU times: user 8min 40s, sys: 11min 39s, total: 20min 19s
Wall time: 17min 13s

if I run without validation set, training completes in  1 min 24 sec. Huge difference:
Embedding parameter count: 101176680
Non-embedding parameter count: 2747145
[<callbacks.ThroughputLogger object at 0x7f70c04d4590>, <tensorflow.python.keras.callbacks.TensorBoard object at 0x7f70c062cb50>]
200/200 [==============================] - 61s 223ms/step - loss: 0.1601 - auroc: 0.6620
CPU times: user 43.4 s, sys: 3min 2s, total: 3min 45s
Wall time: 1min 24s

@rnyak I used the same ngc container and the same instance type.

If it is about spilling from host memory to disk, maybe you can try out a larger machine to have more host memory
Is the data to a local file system? If the data is read from the a "dataset", then this can be slow
I use the same batch-size and most of the same functions, but I use a different network architecture as accelerating-tensorflow.ipynb . I think my network architecture is smaller, maybe thats the reason we see different behavior?

@bschifferer  I am seeing this behavior both on NGC instance, and also on DGX06 system with single V100-32 GB GPU. My issue is not only about timing, it is also why I cannot have validation auc metric printed out, if I am using validation_callback = KerasSequenceValidater(dataset). This is a strange behavior was not happening previously.

If it is about spilling from host memory to disk, maybe you can try out a larger machine to have more host memory.

I can try that. But not sure about spilling.

Is the data to a local file system? If the data is read from the a "dataset", then this can be slow.

No, on NGC, it is not read from the dataset. It is copied to a folder in my workspace, so read from there. On DGX06 I mounted the /raid/ to a folder inside the docker container.

I use the same batch-size and most of the same functions, but I use a different network architecture as accelerating-tensorflow.ipynb . I think my network architecture is smaller, maybe thats the reason we see different behavior?

could be. It might be related to DLRM architecture. But we think there is inefficient memory usage by the data loader at validation step or a bug

Is the data to a local file system? If the data is read from the a "dataset", then this can be slow.

No, on NGC, it is not read from the dataset. It is copied to a folder in my workspace, so read from there. On DGX06 I mounted the /raid/ to a folder inside the docker container.

--datasetid xxx:/dataset/ --workspace xxxxx:/workspace:RW
Do you mean, the train and validation dataset is in /workspace? Can you copy the data to a local directory on the NGC instance (e.g. cp -R /workspace/data /tmp/data), first ? If the data is on a NGC dataset or NGC workspace, the instance will read the data from a network storage. I think it is faster to copy the data, first, to be sure, that the data is not read over network

Do you mean, the train and validation dataset is in /workspace? Can you copy the data to a local directory on the NGC instance (e.g. cp -R /workspace/data /tmp/data), first ?
This is what I have done already.

Do you mean, the train and validation dataset is in /workspace? Can you copy the data to a local directory on the NGC instance (e.g. cp -R /workspace/data /tmp/data), first ?
This is what I have done already.

Is the data to a local file system? If the data is read from the a "dataset", then this can be slow.

No, on NGC, it is not read from the dataset. It is copied to a folder in my workspace, so read from there. On DGX06 I mounted the /raid/ to a folder inside the docker container.

--datasetid xxx:/dataset/ --workspace xxxxx:/workspace:RW
Do you mean, the train and validation dataset is in /workspace? Can you copy the data to a local directory on the NGC instance (e.g. cp -R /workspace/data /tmp/data), first ? If the data is on a NGC dataset or NGC workspace, the instance will read the data from a network storage. I think it is faster to copy the data, first, to be sure, that the data is not read over network

@bschifferer
This is what I have done already, i.e. cp -R /workspace/train. It is not read over network. Also note that, I have done the preprocessing offline with NVT, so, my data is also stored in a folder in my workspace. So it cannot read network storage I believe. As I said this behavior I shared above is same on a DGX06 system.

@rnyak there is a lot to unpack here. Appreciate the abundance of information. I do need to ask for more specifics on your repro on DGX06 is this the ASE lab dgx06 machine or a separate machine that you are identifying as a dgx06? When I refer to the dgx06 system I am referring to a dgx-1 server with 8 - V100 32gb GPUs, I ask because of this statement "DGX06 system with single V100-32 GB GPU". Are we talking about the same resource?
So this is a good place to start on spilling:
https://distributed.dask.org/en/latest/worker.html#memory-management
Also let me add a disclaimer, I am not sure this is the problem. This is just my best guess, I would have to be able to repro the problem to get a more concrete diagnosis.

@jperez999 yes it is the same system: dgx-1 server with 8 - V100 32gb GPUs, but I am only using one single GPU there. I am using joc:latest container on dgx-1 server.
Julio, my main issue is that I cannot get the model validation acc metrics (auc and loss values) printed out even though I am using validation_callback = KerasSequenceValidater(dataset).
Strange behavior:

I can get them printed out with a small dataset
I used to get my validation set acc printed out even with larger dataset before NVT 0.3 release.

I believe there is a bug or something.
@gabrielspmoreira for viz.

This seems to be related to insufficient host / gpu memory - closing

This seems to be related to insufficient host / gpu memory - closing


e-reader compatibility

"Use this cart extender to increase the height of a gameboy cartriage and allow clearence for accessories that would not normally fit (Action Replay, boktai, E-Reader, etc...)."
Have you tested this with an e-reader on the analogue pocket?

I have not tested it we an e-reader. I've tested with an action replay (which boots to the menu but games don't load, probably due to the way the Pocket loads the games), regular cartridges, and it's been test on original hardware.

Ok thanks. Have you tried it with Boktai?

Not me personally but it has been verified by other users. Eg. https://www.reddit.com/r/AnaloguePocket/comments/1bh4pfs/made_extra_cartridge_extenders_selling_the_extras/

I made a bunch of these with professional solder work (i.e. not by my own hands) and listed them at my site https://aurbits.com/listing/1731831429/cart-extender-for-analogue-pocket-play e-reader works but not well.

Thanks for the update. Glad it work, even if not the most ideal. I would ask you to link the shell , not just mention the name of the project in the listing.

Ok, I wasn't sure about external links on the listing because this is also listed on Etsy but I can try to add it and see if there's issues.


docs: add knex examples

Change Description
Adds examples of using cloud-sql-nodejs-connector library with knex for pg and mysql2 drivers.
Checklist

[x] Make sure to open an issue as a
bug/issue
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea.
[x] Ensure the tests and linter pass
[x] Appropriate documentation is updated (if necessary)

Relevant issues:

Fixes #111

Hi @ruyadorno!
No problem, I just changed it based on your comment.

Awesome! It looks great, thanks @edosrecki

I was also thinking whether you would prefer examples written in the form of tests (like system-test directory), and install required library (e.g. knex) in the CI worklow, or do you think that's too much?

I believe that's a bit too much, the goal is just to have some usage examples and this format looks good 😊

@jackwotherspoon,
That's a great point. I would prefer having sub-folders per library. We have 3 databases, but in Issues there are already discussion about at least 5 libraries, so from the cardinality point of view, I feel like that makes more sense.

@jackwotherspoon, @ruyadorno
Moved knex examples to examples/knex.

hi @edosrecki just wanted to follow up and let you know that we're planning on landing your example PRs after this week's release (it's a big milestone for us since the connector will be going v1.0.0). Rest assured that your contribution is very welcomed and we'll get it merged as soon as possible afterwards 😊


chore: update anymodal.py

Complemetary -> Complementary

Thanks, I believe I have fixed the typo with a bunch of other changes in the latest set of updates.


What is the proper way to limit access to a static web app?

Hi,
I was wondering if there are some recommendations to limit direct internet access to a Static Web App?
I would like to explore the possibility to put an Azure Front-Door in front of a Static Web app and allow access only through Azure Front-Door. For Azure Web Apps I am doing this by using an internal network and limit the access to the port 443 or 80 to front-door only.
Thank you for your feedback,
Patrick

Hey @plamber, we are working on a feature to allow you to limit access to either a private endpoint or a set of ipv4 addresses, I believe this will unblock you.
As for ports, static web apps only operate over HTTPS so 443 is the only reachable port already.

Hi @miwebst ,
This is exactly what I was looking for.
Do you have some rough estimates when this might become an option?
Thank you for the awesome work

A rough estimate, as we have a number of things in flight, for the ipv4 config will be 1-2 months. For the private endpoint integration, we are waiting on changes from another team so I don't have an ETA for that yet.

Thank you

Hi. @miwebst. Is there any status update regarding the access restrictions to SWA? And will it be possible to apply the restriction separately for production and staging environments (in case we want production to be publicly available while staging/test environments private)?

@plamber Did you use Front-Door for your setup? We are trying to use a WAF (firewall) to manage exploits, and using Front-Door looks to be the best approach for this use case.

We recently added the ability to restrict inbound traffic to specific IP blocks. See the Networking section of the config documentation. @ozkary you should be able to use this capability to restrict access to your Azure Application Gateway WAF.
For Front Door, we're working on the ability to restrict inbound traffic to specified service tags which would allow you to restrict access to Front Door only. We hope to have this capability in the next couple of months.

@plamber @ozkary you can now configure your static web apps to allow access only from your Azure Front Door instance, check out steps here and let us know if you have any feedback please Add Azure Frontdoor

Thank you @simonaco.
Do you have some recommendations how provision these settings using an ARM or bicep template?

Hi, same situation here, we need to deploy SWA in Environments a,b,c,d. In c and d, the SWA will be behind the front door. Not sure if there is any elegant way to do this.
I'm think of adding bash/or pwsh script in the deployment pipeline to replace the strings in the staticwebappconfig.json with the Frontdoor ID and its domain name.

Is there an update on this? For us, the whitelist comes from Akamai.

What about connecting an Azure Front Door Premium via Private endpoints to the SWA? Just like App Services and Storage origins? Any roadmap on this?


Replace reqwest with hyper

Currently we are installing reqwest solely to talk to the Strapi backend, while also needing hyper for hosting the bot API server. After the recent dependency update, we are also explicitly relying on hyper-tls to talk to the Matrix servers via Ruma over https.
Since hyper should provide similar client functionality to reqwest, could we just replace the reqwest dependency with it and rewrite the Strapi module, @badboy ?
I looked into this yesterday because reqwest was pulling in a pre-1.x version of tokio, but felt way over my paygrade, and the reqwest package bump solved the issue, updating to a fully 1.x tokio stack, but it would still be useful to get rid of a (redundant) dependency if we could.
Fwiw I'm happy to look into this and give this a go if there is no particular show-stoppers why I shouldn't. :)

Why? reqwest makes it very convenient to do HTTP requests. It's really the nice API on top of hyper that you want anyway, and removing that just makes you write all this code yourself (well, maybe "less code" but I still wouldn't bother)


Update index.md

PR checklist

[ ] Addresses an existing issue: #0000
[ ] New feature, bugfix, or enhancement
[ ] Includes tests
[*] Documentation update

Overview of change:
Fixes a minor typo. Thought I should contribute to TSLint before I start at Palantir in Jan!
Is there anything you'd like reviewers to focus on?

CHANGELOG.md entry:

Thanks for your interest in palantir/tslint, @xavier630! Before we can accept your pull request, you need to sign our contributor license agreement - just visit https://cla.palantir.com/ and follow the instructions. Once you sign, I'll automatically update this pull request.


Consider to make jsontext.Decoder/Encoder as interface

With this changes,
we could make any json-compat configuration language (like toml/yaml/msgpack/urlencoded) easy to

define single struct once, unmarshal/marshal manies

unmarshal from custom wrapper of  jsontext.Decoder  (configuration language token -> json token -> go value)
marshal to custom wrapper of  jsontext.Encoder (go value -> json token -> configuration language token )

Some aspects of this have been discussed previously. See https://github.com/golang/go/discussions/63397#discussioncomment-7214544

We considered making jsontext.Encoder and jsontext.Decoder an interface, but the performance wasn't great since every method call now went through a dynamic method call, which is much slower than a concrete method call. It makes sense to optimize for the standard JSON syntax as implemented by "jsontext".

That said, nothing prevents a future where we do make this more configurable where you register a custom encoder/decoder implementation into the concrete jsontext.Encoder and jsontext.Decoder types. Such an approach would keep the standard approach fast, and the highly flexible approach slightly slower than a pure interface, which is equally slow for all situations.
Closing this here as I don't think we'll be making this change for the initial release of v2, but we're aware of the desire and flexibility benefits it could bring.
If you want to discuss this further, feel free to do so at https://github.com/golang/go/discussions/63397


Broken -u in node v5.4.0 (or with some updated module)

npm-check v4.1.3
OSX: 10.11.2
Interactive mode works fine with v5.3.0
In v5.4.0 I get:
└> npm-check -u
[npm-check] TypeError: content.split is not a function
    at forceLineReturn (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/node_modules/inquirer/lib/utils/screen-manager.js:133:39)
    at ScreenManager.render (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/node_modules/inquirer/lib/utils/screen-manager.js:61:21)
    at Prompt.render (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/lib/prompts/alt-checkbox.js:117:15)
    at Prompt._run (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/lib/prompts/alt-checkbox.js:82:8)
    at Prompt.run (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/node_modules/inquirer/lib/prompts/base.js:55:8)
    at Object.<anonymous> (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/node_modules/inquirer/lib/ui/prompt.js:84:12)
    at module.exports (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/node_modules/run-async/index.js:15:21)
    at AnonymousObservable.__subscribe (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/node_modules/inquirer/lib/utils/utils.js:16:7)
    at AnonymousObservable.tryCatcher (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/node_modules/rx-lite/rx.lite.js:63:31)
    at setDisposable (/Users/metalim/.nvm/versions/node/v5.4.0/lib/node_modules/npm-check/node_modules/rx-lite/rx.lite.js:5741:44)

Experiencing same thing in Node 4.2.4 with npm 2.14.12

Thanks for reporting this.
Can you provide the output for this:
npm-check --debug

Thanks!

Also, are you using nvm to switch node versions? If you are not, can you try re-installing npm-check?

Update: I'm able to reproduce the problem locally when installing npm-check with npm@3.
If you figure out a fix for this let me know.

I figured out the problem and should have a fix published some time today.

new version published! Thanks again for reporting the issue.


[D3D12] Segfault when importing GDQuest Third Person Controller demo

Tested versions

New in 4.3.dev (41365c6c8ba357a490ed924a128958240f3ccf04) which is the first version with D3D 12 support.

System information
Windows 10 - D3D12 (Forward+) - dedicated Radeon RX Vega (Advanced Micro Devices, Inc.) - AMD Ryzen 7 2700 Eight-Core Processor (16 Threads)
Issue description
While testing #70315 yesterday, I ran into a segfault when trying to open the GDQuest Third Person Controller demo with D3D12 in the editor. It seems to crash during import of some scenes.
My build was made without debug symbols so the stacktrace isn't useful. I'm not sure if I'll have time to debug further before going on holiday, so anyone interested can try to reproduce and post a stacktrace with debug symbols.
$ ./bin/godot.windows.editor.x86_64.console.exe
Godot Engine v4.3.dev.custom_build.f60b64765 - https://godotengine.org
OpenGL API 3.3.0 Core Profile Context <IP_ADDRESS>017 - Compatibility - Using Dev
ice: ATI Technologies Inc. - Radeon RX Vega

Editing project: D:/Dev/Godot/Projects/godot-4-3d-third-person-controller
Godot Engine v4.3.dev.custom_build.f60b64765 - https://godotengine.org
D3D12 feature level 12_0 - Forward+ - Using D3D12 Adapter #0: Radeon RX Vega

WARNING: Blend file import is enabled in the project settings, but no Blender pa
th is configured in the editor settings. Blend files will not be imported.
     at: _editor_init (.\modules/gltf/register_types.cpp:63)
ERROR: Condition "!preset.is_valid()" is true. Continuing.
   at: EditorExport::load_config (.\editor/export/editor_export.cpp:225)
ERROR: Couldn't open MTL file 'res://Environment/grass/grass_1_geo.mtl', it may
not exist or not be readable.
   at: (.\editor/import/resource_importer_obj.cpp:48)
WARNING: Ignoring face with non-finite normal in LOD generation.
     at: ImporterMesh::generate_lods (.\scene/resources/importer_mesh.cpp:518)
ERROR: Command list Reset failed with error 0x80070057.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:9023)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:3042)
ERROR: Condition "data.size() == 0" is true. Returning: Ref<Image>()
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1272)
ERROR: CreateResource failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:2242)
ERROR: Condition "texture.rd_texture.is_null()" is true.
   at: RendererRD::TextureStorage::texture_2d_initialize (.\servers/rendering/re
nderer_rd/storage_rd/texture_storage.cpp:841)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_size_override (.\servers/renderin
g/renderer_rd/storage_rd/texture_storage.cpp:1407)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_3d_callback (.\servers/ren
dering/renderer_rd/storage_rd/texture_storage.cpp:1437)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_roughness_callback (.\serv
ers/rendering/renderer_rd/storage_rd/texture_storage.cpp:1453)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_normal_callback (.\servers
/rendering/renderer_rd/storage_rd/texture_storage.cpp:1445)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1264)
ERROR: CreateResource failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:2242)
ERROR: Condition "texture.rd_texture.is_null()" is true.
   at: RendererRD::TextureStorage::texture_2d_initialize (.\servers/rendering/re
nderer_rd/storage_rd/texture_storage.cpp:841)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_size_override (.\servers/renderin
g/renderer_rd/storage_rd/texture_storage.cpp:1407)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_3d_callback (.\servers/ren
dering/renderer_rd/storage_rd/texture_storage.cpp:1437)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_roughness_callback (.\serv
ers/rendering/renderer_rd/storage_rd/texture_storage.cpp:1453)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_normal_callback (.\servers
/rendering/renderer_rd/storage_rd/texture_storage.cpp:1445)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1264)
ERROR: CreateResource failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:2242)
ERROR: Condition "texture.rd_texture.is_null()" is true.
   at: RendererRD::TextureStorage::texture_2d_initialize (.\servers/rendering/re
nderer_rd/storage_rd/texture_storage.cpp:841)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_size_override (.\servers/renderin
g/renderer_rd/storage_rd/texture_storage.cpp:1407)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_3d_callback (.\servers/ren
dering/renderer_rd/storage_rd/texture_storage.cpp:1437)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_roughness_callback (.\serv
ers/rendering/renderer_rd/storage_rd/texture_storage.cpp:1453)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_normal_callback (.\servers
/rendering/renderer_rd/storage_rd/texture_storage.cpp:1445)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1264)
ERROR: CreateResource failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:2242)
ERROR: Condition "texture.rd_texture.is_null()" is true.
   at: RendererRD::TextureStorage::texture_2d_initialize (.\servers/rendering/re
nderer_rd/storage_rd/texture_storage.cpp:841)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_size_override (.\servers/renderin
g/renderer_rd/storage_rd/texture_storage.cpp:1407)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_3d_callback (.\servers/ren
dering/renderer_rd/storage_rd/texture_storage.cpp:1437)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_roughness_callback (.\serv
ers/rendering/renderer_rd/storage_rd/texture_storage.cpp:1453)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_normal_callback (.\servers
/rendering/renderer_rd/storage_rd/texture_storage.cpp:1445)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1264)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "t" is null.
   at: RendererRD::TextureStorage::texture_free (.\servers/rendering/renderer_rd
/storage_rd/texture_storage.cpp:767)
ERROR: Can't create buffer of size: 432, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 144, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 192, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 204, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 68, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 144, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 72, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 36, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 288, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 192, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 136, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 144, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 72, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 36, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Condition "res" is true. Returning: ERR_UNAVAILABLE
   at: D3D12Context::_update_swap_chain (drivers\d3d12\d3d12_context.cpp:742)
ERROR: CreateRootSignature failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:5236)
ERROR: Parameter "p_version->variants" is null.
   at: ShaderRD::_allocate_placeholders (.\servers/rendering/renderer_rd/shader_
rd.cpp:483)
ERROR: Parameter "p_version->variants" is null.
   at: ShaderRD::_allocate_placeholders (.\servers/rendering/renderer_rd/shader_
rd.cpp:483)
ERROR: Parameter "p_version->variants" is null.
   at: ShaderRD::_allocate_placeholders (.\servers/rendering/renderer_rd/shader_
rd.cpp:483)
ERROR: Condition "!shader_singleton->shader.version_is_valid(version)" is true.
   at: RendererSceneRenderImplementation::SceneShaderForwardClustered::ShaderDat
a::set_code (servers\rendering\renderer_rd\forward_clustered\scene_shader_forwar
d_clustered.cpp:181)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)

================================================================
CrashHandlerException: Program crashed
Engine version: Godot Engine v4.3.dev.custom_build (f60b64765c52d043a1fc2405af5b
375d22864914)
Dumping the backtrace. Please include this when reporting the bug to the project
 developer.
[0] <couldn't map PC to fn name>
[1] <couldn't map PC to fn name>
[2] <couldn't map PC to fn name>
[3] <couldn't map PC to fn name>
[4] <couldn't map PC to fn name>
[5] <couldn't map PC to fn name>
[6] <couldn't map PC to fn name>
[7] <couldn't map PC to fn name>
[8] <couldn't map PC to fn name>
[9] <couldn't map PC to fn name>
[10] <couldn't map PC to fn name>
[11] <couldn't map PC to fn name>
[12] <couldn't map PC to fn name>
[13] <couldn't map PC to fn name>
[14] <couldn't map PC to fn name>
[15] <couldn't map PC to fn name>
[16] <couldn't map PC to fn name>
[17] <couldn't map PC to fn name>
[18] <couldn't map PC to fn name>
[19] <couldn't map PC to fn name>
[20] <couldn't map PC to fn name>
[21] <couldn't map PC to fn name>
[22] <couldn't map PC to fn name>
[23] <couldn't map PC to fn name>
[24] <couldn't map PC to fn name>
[25] <couldn't map PC to fn name>
-- END OF BACKTRACE --
================================================================

Steps to reproduce

Clone https://github.com/gdquest-demos/godot-4-3d-third-person-controller
Edit it once with Vulkan to change the RD rendering driver for Windows to d3d12 (or change it by modifying project.godot directly)
Close, and delete .godot folder to start fresh
Edit it with a 4.3.dev build with D3D12 support -> crash

Minimal reproduction project (MRP)
https://github.com/gdquest-demos/godot-4-3d-third-person-controller

This happens due to a compressed texture whose size is not multiple of block size (4x4), during a texture read operation. Since #83452 overhauls that function to make it API-agnostic, it may very well be the case that this is already fixed there. If it's not, I'll anyway fix it already there since otherwise it'd be like fixing it twice.


Bluetooth: attr->user_data is NULL when doing discovery with BT_GATT_DISCOVER_ATTRIBUTE

Describe the bug
Changing the discovery type from BT_GATT_DISCOVER_CHARACTERISTIC to BT_GATT_DISCOVER_ATTRIBUTE results in the attr->user_data for discovered characteristics being NULL in the discovery callback.
A clear and concise description of what the bug is.
I have the following code in a discovery callback:
if (!bt_uuid_cmp(attr->uuid, BT_UUID_GATT_CHRC)) {
	BT_DBG("It is a characteristic");
} else if (!bt_uuid_cmp(attr->uuid, BT_UUID_GATT_CCC)) {
	BT_DBG("It is a CCCD");
	return BT_GATT_ITER_CONTINUE;
} else {
	BT_DBG("It is something else");
	return BT_GATT_ITER_CONTINUE;
}

/* We have found an attribute, and it is a characteristic */
/* Find out which attribute, and subscribe if we should */
BT_DBG("attr->user_data: %p", attr->user_data);
chrc = (struct bt_gatt_chrc *)attr->user_data;
BT_DBG("UUID: %s", bt_uuid_str(chrc->uuid));

If the discovery is called with  BT_GATT_DISCOVER_CHARACTERISTIC, this gives results as follows:
[00:00:55.879,455] <dbg> bt_mcc: discover_mcs_char_func: [ATTRIBUTE] handle 0x00BB
[00:00:55.879,486] <dbg> bt_mcc: discover_mcs_char_func: It is a characteristic
[00:00:55.879,547] <dbg> bt_mcc: discover_mcs_char_func: attr->user_data: 0x200176a0
[00:00:55.879,608] <dbg> bt_mcc: discover_mcs_char_func: UUID: 2b93

If instead the discovery is called with BT_GATT_DISCOVER_ATTRIBUTE, the results are:
[00:00:54.949,890] <dbg> bt_mcc: discover_mcs_char_func: [ATTRIBUTE] handle 0x00BB
[00:00:54.949,890] <dbg> bt_mcc: discover_mcs_char_func: It is a characteristic
[00:00:54.949,920] <dbg> bt_mcc: discover_mcs_char_func: attr->user_data: (nil)
[00:00:54.949,981] <dbg> bt_mcc: discover_mcs_char_func: UUID: 2000

Note that the attr->user_data is NULL.  (And de-referencing it of course gives meaningless results.)
Please also mention any information which could help others to understand
the problem you're facing:

What target platform are you using?

nRF52840

What have you tried to diagnose or workaround this issue?

The two different types of discovery have different implementations - one uses gatt_find_info(), the other gatt_read_type().
Additional info from @Emil-Gydesen-Bose
The only place we use BT_GATT_DISCOVER_ATTRIBUTE is the BT shell, and that only prints attr->uuid and never casts the results.
BT_GATT_DISCOVER_ATTRIBUTE is furthermore the only place where gatt_find_info (and consequently gatt_find_info_rsp) is called
For BT_GATT_DISCOVER_CHARACTERISTIC we do
        value = (struct bt_gatt_chrc)BT_GATT_CHRC_INIT(
            &u.uuid, sys_le16_to_cpu(chrc->value_handle),
            chrc->properties);
        attr = (struct bt_gatt_attr)BT_GATT_ATTRIBUTE(
            BT_UUID_GATT_CHRC, 0, NULL, NULL, &value);
        attr.handle = handle;

        if (params->func(conn, &attr, params) == BT_GATT_ITER_STOP) {
            return 0;
        }

when constructing the callback data, but for BT_GATT_DISCOVER_ATTRIBUTE we only do
        attr = (struct bt_gatt_attr)BT_GATT_ATTRIBUTE(
            &u.uuid, 0, NULL, NULL, NULL);
        attr.handle = handle;

        if (params->func(conn, &attr, params) == BT_GATT_ITER_STOP) {
            return;
        }

To Reproduce
Steps to reproduce the behavior:
Check out https://github.com/asbjornsabo/zephyr/tree/mcc_discovery_bug
(This is very close to zephyr main)
Build the bluetooth shell with the audio configuration file:
zephyrproject/zephyr/tests/bluetooth/shell$ rm -rf build && cmake -H. -Bbuild -GNinja -DBOARD=nrf52840dk_nrf52840 -DCONF_FILE=audio.conf
zephyrproject/zephyr/tests/bluetooth/shell$ cd build/ && ninja
Run on two nRF5240 kits, initialize bt, mcc and mpl, connect, run mcc discover_mcs command.
Expected behavior
A clear and concise description of what you expected to happen.
I'd expect
chrc = (struct bt_gatt_chrc)attr->user_data;
BT_DBG("UUID: %s", bt_uuid_str(chrc->uuid));

To work the same regardless of the type of discovery as long as attr->uuid == BT_UUID_GATT_CHRC
Impact
What impact does this issue have on your progress (e.g., annoyance, showstopper)
Right now: Hindering my rewrite of the discovery to enqueue fewer subscriptions at a time so that it does not fail.
In principle: Inconsistent and undocumented behavior in callbacks.  Not possible to discover characteristics and CCCDs in same discovery (?).
Environment (please complete the following information):

OS: (e.g. Linux, MacOS, Windows)
Linux

Toolchain (e.g Zephyr SDK, ...)

Zephyr SDK

Commit SHA or Version used
https://github.com/asbjornsabo/zephyr/commit/421e179f1bd625b9ec5e49e230b2fb8b8f612f0a
from branch given above

Useful addition from the bt_gatt_discover_func_t documentation:
 *  The attribute object as well as its UUID and value objects are temporary and
 *  must be copied to in order to cache its information.
 *  Only the following fields of the attribute contains valid information:
 *   - uuid      UUID representing the type of attribute.
 *   - handle    Handle in the remote database.
 *   - user_data The value of the attribute.
 *               Will be NULL when discovering descriptors
 *
 *  To be able to read the value of the discovered attribute the user_data
 *  must be cast to an appropriate type.
 *   - @ref bt_gatt_service_val when UUID is @ref BT_UUID_GATT_PRIMARY or
 *     @ref BT_UUID_GATT_SECONDARY.
 *   - @ref bt_gatt_include when UUID is @ref BT_UUID_GATT_INCLUDE.
 *   - @ref bt_gatt_chrc when UUID is @ref BT_UUID_GATT_CHRC.

The documentation states that it is NULL for descriptors, but should otherwise provide one of the above structs as the user_data

Alternative way of reproducing it is also to simply use the bt shell and run gatt discover and output the attr->user_data value, as that also does discovery with BT_GATT_DISCOVER_ATTRIBUTE

@asbjornsabo @Emil-Gydesen-Bose  as you have done a detailed analysis and may have solutions that can be discussed, may be you could send a PR?

Either @asbjornsabo or I will take a crack at it :)


SchedulerClient tests failing after introducing #424

After merging #424, it looks like the following tests are now failing:
test_async_make_request_1_a
test_async_make_request_1_b
test_async_make_request_1_c
test_async_make_request_2_a
test_async_make_request_2_b
test_async_make_request_2_c
test_async_make_request_3_a
test_async_make_request_3_b
test_async_make_request_3_c

The 1 tests are failing because this was added:
2 are failing because of this.
3 are failing because of this.
@robertbartel, can you confirm if the tests should still be passing or has the implementation changed such that the failures should be what we are testing for? Im happy to fix this stuff, just not sure what the intended behavior is.

Yeah, I'd noticed and started looking at these a little bit ago.  So far, the failing tests that I've looked at closely have done so because there are now invalid, due to changed behavior.   I'm in the middle of fixing now.  There's a couple still I haven't confirmed yet, but I suspect it's the same.


Performance

Coverage remained the same at 100.0% when pulling f66f213f4bc53847918dfe892429c99fcb411075 on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling f66f213f4bc53847918dfe892429c99fcb411075 on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling 935e11f79a4c5588f444aa831cd839b3fe2abcb3 on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling b79e19b42a77f4352d9c91c7e717737bd0cca66d on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling b79e19b42a77f4352d9c91c7e717737bd0cca66d on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling f145dc97c70b7a5130d80b11a001eb742f6ff9ac on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling f145dc97c70b7a5130d80b11a001eb742f6ff9ac on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling f145dc97c70b7a5130d80b11a001eb742f6ff9ac on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling fd0cc002f65a6c2e7f17e804d503482ec61a1e55 on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.

Coverage remained the same at 100.0% when pulling f7a1ef4c633531c83ef892e6205fc613c510d051 on performance into bb192b974b0c7d4050929d00abcbdbe8acb5db46 on master.


[Website] Added Vertical Accordian of Frequently asked questions on C…

…areer Page

[x] I have followed (at least) the PR section of the contributing guide.

The preview image:

assign it to me

Hey @ARYAN-CODES-STAR, thanks for putting effort in! I'll close this PR, though, as I don't think we need a vertical layout for this specific FAQ section — the content is super short, and we'd be consuming way more space than needed. Appreciate it, though. 🤙


Syntax Errors on Fragments

The error messages in defining fragments is not clear.
registerFragment(`
  fragment HandlePartiesBadge on HandleParty {
    _id
    createdAt
    isMod
    party {
      ...HandlePartyBadge

  }
`);

Will get you this error:
Error: Subfragment “HandlePartiesBadge” of fragment “HandleBadge” has not been initialized yet.
The error messages should be able to report syntax errors in fragments.

Looks like fragment processing is hard coded using regular expressions.  Can anyone suggest a better awy


ResultsLoader does not work!!!

I added component ResultsLoader  to my app.
const InitialLoaderComponent = () => {
    return
Loading...

}

<ResultsLoader renderElement={InitialLoaderComponent}/>

The document is very confused, to be honest. It is written that the ResultsLoader component only has one prop, which is renderElement to override the default rendered component. However, my code did not work. It kept saying that:
Uncaught Error: ResultsLoader(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.

Even if I removed prop renderElement and just use <ResultsLoader />, it still showed the same error

Ping @zzacharo

Hey @hauph can you please provide some more detailed description on how you used the ResultsLoader component? The renderElement property is just a way to define your own implementation of a loader component. I think is better to give you an example on the behaviour of the component:
Let's take the example described in one of our demo applications:
Here the ResultsLoader component wraps our OnResults component so the latter is rendered only when the results are fetched. With that said, the ResultsLoader is rendering whatever is passed as child to it when the results are fetched. Note here that the renderElement property will just render a different component as long as the results are not yet fetched.
So coming back to your example I see that you are using the component without passing any child component. You need to use this component as:
const InitialLoaderComponent = () => {
    return
Loading...

}

<ResultsLoader renderElement={InitialLoaderComponent}>
    <MyResultsComponent />
</ResultsLoader>

To summarise, I would like to say that this module is not officially released and maybe some things in the documentation are missing or they are not well done. Your feedback is much appreciated! I created an issue https://github.com/inveniosoftware/react-searchkit/issues/97 to track this. Let me know if you have any other question. Also I would encourage you to check our demos and how we use these components in practice!

Thank you for your reply.
However, I have decided to make my own React component to handle ElasticSearch, so I am no longer using your library.
Anyway, you are doing great job! Thank you for your hard work on making this library.


Any way to get Map JS object for doing manual javascript on it?

Is there any way to get the Google Maps JS object of a map output by this library? I need to run some code from the Google JS API on the map in addition to what's done by this library.

Could you try to see if  this sample helps?
Specifically, the OnMapLoaded where you can get a reference to the map object in javascript.

This works great, thank you.


Fail to sign a transaction

Problem
Fail to sign a transaction
Expected Behavior
Transaction gets signed successfully
Steps to reproduce

Open an app
Try to do a transaction
Click sign in the wallet
Observe an issue with signing transaction.

Reasoning
Some accounts are not getting found from backend.
For example this fails: https://helper.mainnet.near.org/account/walletState/illia.near But account exists https://explorer.near.org/accounts/illia.near

Closing duplicate issue (#1965)


District heat not supported

Hi John,
First of all big hooray for this API/plugin; ever since Eneco discontinued the older API interface the build-in 'Toon Thermostat' hardware didn't work anymore..
While configuring this toonapilib4domoticz plugin, I noticed the District heat usage is not supported by the toonapilib.
After some checking I figured out what to do in order to fix this from the API perspective; see below code changes. Tested this with the testtoonapilib.py and works like a charm.
Now on the Domoticz side, I think we should add some new device (heat.py) in line with the power.py/ gas.py. While doing so, perhaps also an idea to include a device showing the cumulative daily usage costs (toon.power.daily_cost / toon.heat.daily_cost / toon.gas.daily_cost ).
Are you willing to add this to the Domoticz part? What device type / subtype should be used?
Cheers,
Martin

toonapilib changes (note: the python folder may be named differently based upon version running):
/usr/local/lib/python3.7/dist-packages/toonapilib/helpers.py
line 84 added:
HeatUsage = namedtuple('HeatUsage',
                        Usage._fields + Low._fields)

/usr/local/lib/python3.7/dist-packages/toonapilib/toonapilib.py
line 49 added:
                     HeatUsage,
line 420 added:
    @property
    def heat(self):

""":return: A power object modeled as a named tuple"""
        heat = self._get_status_value('heatUsage')
        return HeatUsage(heat.get('avgDayValue'),
                         heat.get('avgValue'),
                         heat.get('dayCost'),
                         heat.get('dayUsage'),
                         heat.get('isSmart'),
                         heat.get('meterReading'),
                         heat.get('value'),
                         heat.get('meterReadingLow'),
                         heat.get('dayLowUsage'))

I have added the cost in my test environment for Power and Gas, trying to figure out which device is best to use for this. There is a known issue that there is no cost for Power when using a double meter, only the high cost come through.
The heat I cannot add (or test as I don't have that here), your code changes first need to make it into the ToonApiLib, can you perhaps make a PR for that to happen?
I will test the cost for a few more days and create a PR after that.

My Toon subscription has ended since I have rooted the device a few months back...
I did create a daily cost device (Custom Sensor) based on the JSON from the Toon; calculated the daily costs via scripting;
local PowerCostToday                    = domoticz.utils.round(tonumber(PowerUsageToday) * 2109 / 10000, 2)
local HeatCostToday                     = domoticz.utils.round(tonumber(HeatUsageToday) * 26675 / 1000, 2)
(Power costs 21,09 cents per KWh and heat costs 26,67 EUR per GJ)
I have a new Toon since last week, so let me bring back ToonApiLib on test domoticz environment and see if I can get things to work..
Example response from the Toon API for Heat:
"heatUsage": {
"value": 0,
"dayCost": 0.43,
"avgValue": 6.1,
"meterReading": 1881,
"avgDayValue": 146.29,
"dayUsage": 18,
"isSmart": 0,
"lastUpdatedFromDisplay":<PHONE_NUMBER>902
},

What device did you use for the cost? I now use Text and that works fine showing the current cost, but it doesn't create any nice graphical statistics. So I also tried with a managed counter, but that didn't work either.

A type General, subtype Custom Sensor with 'Aslabel' EUR.
You do get the graph, which increases over the day, and therefor has an average value which doesn;t make much sense, but thats the only disadvantage..

Nice, changed and now testing again...


Unable to run generate_train_data script

Hi @datitran,
Just tried to run the generate_train_data script and I get the below error.  I'm messing around with the environment.yml to see if there is some dependency in there that is not correct.
I have Anaconda3-4.2.0-MacOSX-x86_64.pkg installed from https://repo.continuum.io/archive/ (Anaconda / Python 3.5).
The error:
python generate_train_data.py --file vidfile2.mov --num 400 --landmark landmark.dat
Traceback (most recent call last):
File "generate_train_data.py", line 3, in
import dlib
ImportError: dlopen(/Applications/anaconda/envs/face2face-demo/lib/python3.5/site-packages/dlib.so, 2): Symbol not found: __ZN5boost6python7objects15function_objectERKNS1_11py_functionERKNSt3__14pairIPKNS0_6detail7keywordESA_EE
Referenced from: /Applications/anaconda/envs/face2face-demo/lib/python3.5/site-packages/dlib.so
Expected in: /Applications/anaconda/envs/face2face-demo/lib/libboost_python3.dylib
in /Applications/anaconda/envs/face2face-demo/lib/python3.5/site-packages/dlib.so
Any help would be appreciated!
-Ali

There seems to be a problem with dlib and conda. Have you looked at this already: https://github.com/conda-forge/dlib-feedstock/issues/5.

Thanks for getting back to me!  I did see this post.  So I tired changing Boost to 1.61 (from 1.59) in the environment.yml file and get this error:
UnsatisfiableError: The following specifications were found to be in conflict:

bzip2 1.0.6 3
dlib 19.4 py35_0 -> boost 1.59.*
I'm curious how you didn't run into this problem since your environment.yml file calls out each version and dependency that is needed.

Ok.  So I ran the following commands to make it work:
conda config --add channels conda-forge
conda install dlib
Thanks!


Cutting guide boxes extruded out from fitting surface of fibula cutting guide

Hello. I'm having trouble with my fibula cutting guide because the cutting boxes are extruded from the guide's fitting surface (orange arrows). I've experienced this issue twice in past cases, and it's coming up again. It's not too bad because I can still trim it off after it's printed. Is there a way to fix this?

I think if I get working the adaptedMiterBoxes branch the problem you mention would be solved.
But I need to solve the issue first of allowing the user reverse the order of how the fibula pieces are created. That means: allow him that the first fibula piece is proximal and make it easy to achieve with a button
Please give me some time

But I need to solve the issue first of allowing the user reverse the order of how the fibula pieces are created. That means: allow him that the first fibula piece is proximal and make it easy to achieve with a button

This was solved.
Please try the code of this branch:
https://github.com/SlicerIGT/SlicerBoneReconstructionPlanner/tree/AdaptedBiggerMiterBoxesV2

@SteveMaisi the bottom of the boxes matches the fibula a bit more avoiding the orange arrow problems you mentioned
If there are a lot of successful plannings (i.e. good feedback) with this branch it may become part of the main branch

Hi Steve. The problem is that you missed a step in the segmentation instructions of the fibula:

Go to Wrap Solidify effect and click apply. (This is needed because it is recommended that bone segmentations have no holes inside so the assisted miterBox positioning algorithms work well)

To achieve correct miterBoxes positioning in your current plan: fix the fibula segmentation as explained above (do change the fibulaSegmentationSelector in BoneReconstructionPlanner to another segmentation and then point it back to the fibula segmentation so that the inputs update internally). Then click on "Create bone models from segmentations" and then you can click on "Create miter boxes from fibula planes" and it should work (see the attached picture).
Best Regards,
Mauro

Hi Mauro. Thank you for solving the problem, really appreciated it. Actually, I've been skipping the wrap solidify step because I noticed the segmented surface become rougher and dimensionally slightly altered. This is true when I 3D printed the models, both fibula and fibula cutting guide was no more a perfect fitting. I tried many settings however this is the most satisfactory result. I copy paste this problem and put in BRP issues. is that ok?
Before wrap solidification

after warp solidification

the setting

Hi Steve.
It's a known problem that using wrap solidify changes the smoothing factor of all segments
Please look at the image in this link:
https://discourse.slicer.org/t/option-to-disable-smoothing-of-the-segment-surfaces-in-segment-editor/883/16?u=mau_igna_06
Please check that Smoothing factor is 0.50 (the default value of Slicer) and if not change it, that should solve some of fitting problem.
Also have in mind that there is a feature missing to compensate guide-base fitting over bone with periosteum, that should solve the fitting problem completely
Mauro

It's a known problem that using wrap solidify changes the smoothing factor of all segments

@mauigna06 it should be very easy to fix this. We need to save the original smoothing factor and restore it in the end. Most likely just two lines of code. Would you have time to look at it? Or at least submit an issue to the SurfaceWrapSolidify extension repository to make sure we don't forget about to fix this? Thank you!

It's a known problem that using wrap solidify changes the smoothing factor of all segments

@mauigna06 it should be very easy to fix this. We need to save the original smoothing factor and restore it in the end. Most likely just two lines of code. Would you have time to look at it? Or at least submit an issue to the SurfaceWrapSolidify extension repository to make sure we don't forget about to fix this? Thank you!

Yes, I'll look into it

The problem stated at the first comment of this issue (bad positioning of miterBoxes):

It's due to threshold segmentation of the fibula without applying wrapSolidify to fill cancellous bone which makes the boxes positioning algorithm don't work well.
There are two options:

Ask the user to input the fibula CT and mandible CT, and segment them fully (cortical bone + cancellous bone) through AI
Improve the positioning algorithm to discard the inner cancellous bone polygon before continuing processing

miterBoxes could be substracted with the fibula model, before joining them to the guidebase. This would achieve the best miterBox welding


[17.06 backport] Avoid flakiness of TestLinkContainers

Signed-off-by: Flavio Crisciani<EMAIL_ADDRESS>(cherry picked from commit 73ebaefe9c75e7762bfe2052e45933d799cf8738)

LGTM


Update discord-rare-drop-notificater

Update enabled the plugin again, since it's currently disabled for excessive memory usage.

im struggling to get this to work.
dont know much about github but I forked your repository
added my discord webhook to the settings tab and selected json and saved the webhook. i got a black mask drop and it didnt pop up. My discord is Wugglett#8590 if you have a minute to help trouble shoot, thanks!

im struggling to get this to work.
dont know much about github but I forked your repository
added my discord webhook to the settings tab and selected json and saved the webhook. i got a black mask drop and it didnt pop up. My discord is Wugglett#8590 if you have a minute to help trouble shoot, thanks!

You should use the repo for any issues :)


AB#7293 Items Renaming Robustness

The following components are neither able to be inserted in a page nor visible in edit mode if their datasource item is missing: VendorsGrid, SponsorsGrid, SpeakersGrid, NewsGrid.

@NellyKostadinova , this PR has conflicting files. Could you please fix the merge conflicts? Thanks


Add CUH-ZCT2 Support

Add Support for new DS4(CUH-ZCT2)

LGTM.  Also I just realized I still have function names from my Wiimote API lol, I'll fix that at some point.


Has anybody tried inline editing with Scribe on any mobile device?

Using the demo page in Safari on iOS8, I was able to use all of the options present in the demo page.
A few things that were quirky: The 'link' modal appears to have focus after being activated, but the keyboard is obscured. Clicking on the link input itself activates the keyboard and allows a link to be entered - just a strange user experience.
Undo/Redo scrolls the page to where the Scribe input is aligned to the top of the screen, obscuring the toolbar, making multiple Undo/Redo's tedious. This could possibly be mitigated with design, but feels problematic.

There's a few things I've found out in the long journey I've had with contentEditable. Not all of these are directly Scribe-related (at least not the core), but are just general pitfalls when working with mobile:

Core and pitfalls
If you enact a formatting command (e.g. fontFace, fontColor) on a collapsed selection, certain DOM changes (toolbar buttons in particular, I think) between the command execution and the user's first letter typed causes the editor to "forget" the formatting you've just applied. This is because Scribe's mutation observer gets triggered by the DOM change (despite it being outside scribe.el), which prompts Scribe to run its sanitizers which then in turn break iOS's continuity. Boy that one was fun to trace.
Browser bugs
The removeFormatting command never works on a collapsed selection.
If you add enough new lines, the caret will go outside the editor area.

No matter what you do, the caret is always, always on top. z-index will not avail you.
Toolbar plugin
Formatting buttons (e.g. bold, italic, underline) do not work on a collapsed selection, because the selection gets lost during onclick. Using buttons with onmousedown and event.preventDefault() instead works fine. This doesn't seem to affect block commands like H2 or blockquote.
The toolbar does not correctly update if you change the selection via touch. I monkey-patched this by adding this listener in:  setTimeout(updateUi, 50);
});```
Note the setTimeout: running queryState() during the touchend event doesn't seem to work, you need to wait a short period to get the correct result.

Other minor issues
If you select something on the first line, iOS's toolbar tends to obscure the editor toolbar, preventing the use of any of the buttons unless you have very nimble fingers
The iOS toolbar also includes bold/italic/underline commands, these seem to link to the execCommand versions so aren't an issue, unless for some reason you want to prevent these formatting controls on your editor, in which case they'll need sanitising.
It doesn't seem possible to add text to the start or end of a hyperlink like you can on desktop, you can only change what's in the middle. This means a single-character link is not editable.
If you hide the keyboard with a non-collapsed selection in the editor, the editor will appear to be blurred (the selection disappears), however using any toolbar button causes the selection to return, the keyboard to re-appear and the command to be executed. I think this may be related to the toolbar plugin, but I'm not sure exactly.

I just tested out our implementation of scribe (thanks for an awesome library btw) on iOS and it worked pretty well in Mobile Safari.
But when running the same implementation in a UIWebView (embedded in an iOS app) it managed to initialize, but no interaction with the editor worked. No errors were thrown.
The reason for this is probably that UIWebView doesn't run Mobile Safari's Nitro Javascript Engine. Instead it runs some second class citizen engine that I don't think is compatible with scribe.
As of iOS8 there is a new high performance control called WKWebView that actually runs Nitro and is more similar to Mobile Safari, I will test with this and update with the results.


[WIP] Publishing core functionality of the odata-client module used in Fiori tools

This PR is WIP!
It contains part of the module @sap/ux-odata-client that is used across the SAP Fiori tools. The module simplifies the handling of different backends in a different environments (e.g. SAP Application Studio or locally in VSCode). Once ready for merging, this PR will not contain the full @sap/ux-odata-client but the core functionality required to publish further sub-modules of @sap/generator-fiori and @sap/ux-ui5-tooling.
List of reminders of things that need attention because they are currently incorrect in the wip version:

[x] the uaa flow is throwing generic exceptions instead of specific ones required for consumers to identify whether an exception is blocking or not
[x] V4 catalog services: it is not handled if a a service group is undefined
[ ] move connection validation (internal file: connectionValidator.ts) as well
[x] removed logging module from this PR because it needs to be done properly in a separate effort
[ ] review postConnectionCallback for oauth flow

In some cases odata-client was used as a plain http client. I assume this should not be the case with axios-odata, instead axios should be used directly in that case?
Or is there a benefit in BAS for example to access public (no auth needed) http service such as northwind or ui5 cdn for example via destination using axios-data?

For publicly available services like northwind or the ui5 cdn, neither the old odata-client should have been used, nor the new axios-odata module. Accessing a public url in BAS should work as accessing a public url on your local machine.
However, despite the name axios-odata the module also simplifies the access to none odata services that are accessed via the destination service/proxy in BAS. The module expose the function createForDestination allowing to create an axios instance that abstracts from the destination e.g. createForDestination('MY_DESTINATION').get('/my/path')  would send a plain GET request to the given path.

Build is failing.

Yeah, I was waiting for #398 and then merge from main and update the pnpm-lock.yaml which should make the build work again.


some ca65 fixes, part 2

more changes for ca65 compatibility...
There's more to come, but a couple things that need to get done would cause incompatibilities with pceas, so I'm not sure of the best way to go about it.

something I just realized is that ca65 will flip out if two sources have the same filename (like how the current /include/ca65 directory is set up)... argh
e.g. there's include/memcpy.inc and include/ca65/memcpy.inc; if I set the include directory to include via -I and just try to .include "memcpy.inc", it will include the one in the ca65 folder instead of the base folder.

Hum... that's weird.
Anyway my plan was to have a preprocessor variable telling which compiler is being used and then pick the right directory (ca65 or pceas). This way, we will have something like this in memcpy.inc:
  .if (__ASM__ = __CA65__)
    .include "ca65/memcpy.inc"
  .elseif(__ASM__ = __PCEAS__)
    .include "pceas/memcpy.inc"
  .else
    .fail "Unsupported assembler! Only pceas and ca65 are supported for the moment."

I made a small test, and it seems to work when I invoke ca65 (fresh compilation from the master branch) with -I include... That's weird.

well I'm fucked then because it's still doing the same thing even with a new checkout
freem_example.zip

I found a workaround... and it's ugly...
In include/ca65/start.s :
    .include "ca65/word.inc"
    .include "ca65/memcpy.inc"
    .include "system.inc"
    .include "ca65/../memcpy.inc"
    .include "ca65/../irq.inc"
    .include "io.inc"
    .include "psg.inc"
    .include "ca65/../vdc.inc"
    .include "vce.inc"
    .include "ca65/irq.inc"
    .include "ca65/vdc.inc"

In my opinion, it was including the same file twice as it first searches locally, then goes to the include search paths. I think pceas is working thanks to some side-effect in the include paths management.


Not reloading after setting up amari token

Exception during loading of package
Traceback (most recent call last):
  File "/home/opc/env/lib64/python3.9/site-packages/redbot/core/core_commands.py", line 172, in _load
    await bot.load_extension(spec)
  File "/home/opc/env/lib64/python3.9/site-packages/redbot/core/bot.py", line 1561, in load_extension
    await lib.setup(self)
  File "/home/opc/.local/share/Red-DiscordBot/data/esdeath/cogs/esdeath/giveaways/__init__.py", line 11, in setup
    bot.add_cog(await giveaways.inititalze(bot))
  File "/home/opc/.local/share/Red-DiscordBot/data/esdeath/cogs/esdeath/giveaways/events.py", line 43, in inititalze
    amari = AmariClient(bot, auth)
TypeError: __init__() takes 2 positional arguments but 3 were given

ok so after extensive testing, I can't seem to recreate this error in anyway. Also this doesn't seem to be the whole traceback. it would help if u would show that.

Apparently this is happening in my vps only ig, i tried to make another instance for giveaways specifically but yeah got the same-ish error with Amari?

@japandotorg so i have rewritten the whole cog and merged the changes. You can update the cog and check it out, that error shouldn't come up anymore hopefully

output of pip freeze, btw thanks for the rewrite, will it glitch the old giveaways tho?

f closed my mistake

jeez my ip was literally on the last ss i commented

the the output of pip freeze, btw will it glitch/yeet the old giveaways i hosted tho?

No problemo. Glad to see that you liked it :D


couldn't install with carthage

Added github "LaiFengiOS/LFLiveKit" to my Cartfile.
Run carthage update --platform ios
then,
Dependency "LFLiveKit" has no shared framework schemes for any of the platforms: iOS

If you believe this to be an error, please file an issue with the maintainers at https://github.com/LaiFengiOS/LFLiveKit/issues/new

Thanks,

2.5 version fix

thank you.


Thread safety problem in predict: flag_predict_probability shouldn't be static

The flag_predict_probability boolean in predict is declared static. This causes a problem when running 2 different predict jobs in the same Java process with different probability options: the setting from the second call will overwrite the one from the first call. This may cause a prediction using a non-probabilty-capable solver type to fail, despite being called with correct parameters, if a simultaneous job runs with probabilities enabled.

Thanks for the bug report. I can see the thread-safety problem. It exists since the beginning and from my understanding also in predict.c of the original C++ implementation. Have you already reported an issue in https://github.com/cjlin1/liblinear?
This concurrency bug was probably not discovered so far because the more usual way to run predictions programmatically is to call Linear.predict(…) or Linear.predictProbability(…) which should both be thread-safe. So this would be the workaround until a fix is available in the next release.

Unfortunately the workaround to directly call Linear.predict() isn't usable for us, as we're using an additional abstraction layer that can use either the separate liblinear-train / liblinear-predict native binaries (out-of-process), or liblinear-java if the native versions aren't available. Configuration for training and prediction is given in a config file in the form of a string representing the LibLinear command line, which needs to be parsed identically by both the Java and the native versions. The command line parsing function in liblinear-java is private, and even if it weren't, it uses the same static variable as main() (as well as calling System.exit(), which shoots down the caller on error, rather than throwing an exception or returning some invalid value).
This is not an issue in the C++ version, as that can never be loaded in-process as a library, but only executed as a separate process.

This change is now released via version 2.44.


Get-MgDeviceManagementManagedDevice Blank HardwareInformation

I don't see the HardwareInformation field.  It is available in Get-MgBetaDeviceManagementManagedDevice.  With Get-MgBetaDeviceManagementManagedDevice it is only available when supplying a single ManagedDeviceId.  It returns blank information when calling with a filter or just calling.
The following returns blank information for HardwareInventory.
Get-MgbetaDeviceManagementManagedDevice -select devicename,id,LastSyncDateTime,hardwareinformation -Filter "operatingsystem eq 'Windows'"
The following does not work for me.
Get-MgDeviceManagementManagedDevice -select devicename,id,LastSyncDateTime,hardwareinformation -Filter "operatingsystem eq 'Windows'"
I have a need to report out the wiredIPV4Address for Intune managed devices.  Having to call each one individually is quite slow.
Any advice or assistance would be appreciated.

Hi @erentz71 apologies for the super delay in giving feedback.
That property is no longer being supported by the API owner. You can see the list of supported properties here.
For API related issues/questions we are not best placed to give an answer. Kindly raise an issue here https://developer.microsoft.com/en-us/graph/support so that the API owner can respond to it.


ICreativeWork.Provider doesn't exist in 13.0.0 package

Describe the bug
I just tried upgrading to 13.0.0, and it looks like ICreativeWork.Provider is gone.
Seems like it's still in the schema:
https://schema.org/CreativeWork
Steps to reproduce
Reference ICreativeWork.Provider, and upgrade to 13.0.0.
Expected behaviour
ICreativeWork.Provider to still exist.
Schema objects
https://schema.org/CreativeWork

Hey @kirk-marple - for whatever reason, schema.org marked that property as new so it is only generated in the Schema.NET.Pending package. You should be able to switch to that for access to the property again.
https://schema.org/provider

Hey @kirk-marple - for whatever reason, schema.org marked that property as new so it is only generated in the Schema.NET.Pending package. You should be able to switch to that for access to the property again.
https://schema.org/provider

Oh that's super weird.  I've been using it for years.  Thanks for letting me know.
I'll try the Pending package to add it back.

Unfortunately, since we're persisting the type/assembly, we can't move off Schema.NET package to Schema.NET.Pending, or it breaks existing data.
We have to stay on 11.x for now, until I can migrate data to not use Provider property any longer.
Happen to know when that change was made @Turnerj?    I looked at the Schema.org issues, and can't find when they decided that.

Having a dig through changsets, it was between Schema.org versions 13 and 14 that provider was moved to pending.schema.org, when it was added to Action.
Schema.NET versions up to and including 12 were using an older version of the schema, which didn't have it as pending; the new version 13 uses a much more up to date version (was it 23 @Turnerj?) which is why the change has occurred.

Yeah, that sounds about right. It is difficult to pin down what versions of schema.org we were generating from in the older versions (even now we can only rely on whatever commit message is used when updating). I really wish the JSON files we download and use from schema.org actually could indicate what the version was - I would actually then surface it as a constant in the package.
And yep, Schema.NET v13 is using schema.org v23.
Now @kirk-marple , are you using the serializer that ships with Schema.NET for JSON? If so it shouldn't be doing the assembly as part of the @type property.

@Turnerj Forgot to comment about the serializer.  I didn't even know that existed before.  I've moved over to that now, and that makes serialization a lot easier, thanks!  I'd just been using Newtonsoft directly before, but now this makes our persistent JSON a lot cleaner, and should let us use the Pending package - still need to try that out.


Add Windows and macOS CI

The Windows runs currently have some failing tests, so they're configured to fail without aborting the workflow.
(I'll have to check whether the Windows failures interfere with PR mergeability. They may need to be adjusted to actually fake-pass, instead of simply ignoring the failures.)
Windows failing tests
There are a few files in test/charts/ that Windows dot.exe (from graphviz 9.0.0, installed via Chocolatey) fails on.
1. b51.dot is the one that shows up in the current CI. (It's the first failure in that directory, and the big monolithic test case stops there.) It fails with a hexdigest mismatch — dot.exe just seems to render it a bit differently.
1. b53.dot, same as b51 just renders differently and triggers a digest mismatch.
1. proc3D.dot is a third digest mismatch.
1. b993.dot is different, it never actually renders at all. The graph data starts with the line diGraph G{, and that triggers a syntax error. It seems that Windows dot.exe is case-sensitive, ironically, so it doesn't recognize diGraph as a synonym for digraph.
(Note: One effect of merging #308 would be that all tests are run and every failure reported, rather than skipping all the rest of the tests in the directory at the first sign of failure.)

I've been thinking it might be a good idea to dump the failing-test comparison images into their own directory somewhere, instead of into the current dir. (Even if we ran the tests from an empty dir, tox pollutes its own working directory pretty badly so it's not the best place to store output.)
My basic thought was to have the CI workflow export whatever's in the failure-output dir as build artifacts, IFF it finds something in there.

@lkk7

The case sensitivity is interesting.

The keywords node, edge, graph, digraph, subgraph, and strict are case-independent.
(https://graphviz.org/doc/info/lang.html)

Is it a bug to submit?

I don't see any other way to interpret it, so I've opened https://gitlab.com/graphviz/graphviz/-/issues/2481 with a minimum reproducible example.

@lkk7
So, IMHO it makes sense to merge this, with the Windows tests failing (but configured as allowed-to-fail). Once it's merged, we can tackle trying to fix the broken Windows tests. (Even if that means just configuring those individual tests to be skipped on Windows.)
Merging this would also provide cross-platform CI testing for #308, which would hopefully provide a path towards confidently merging that PR.


Switch...when

Instead of this:
switch req.agent.os.machine and req.agent.family.machine
  when "mac-os-x" and "chrome"
    // Code 1
  when "mac-os-x" and "safari"
    // Code 1

Wouldn't it be easier with:
switch req.agent.os.machine and req.agent.family.machine
  when "mac-os-x" and "chrome" or "safari"
    // Code 1

This would make it more DRY.

switch req.agent.os.machine and req.agent.family.machine

I don't think that means what you think it means.
switch (req.agent.os.machine && req.agent.family.machine) {
  case "mac-os-x" && "chrome":
    …
    break;
  case "mac-os-x" && "safari":
    …
}

This question doesn't make any sense. @johnnywengluu has made some sort of assumption about switch behaviour in the presence of boolean operators. @johnnywengluu: Take a look at the CoffeeScript documentation and   try it out by using the "try coffeescript" feature of the documentation.


Add a world.Handler for crops getting trampled on

I think it might make more sense to put this in entity/player handlers.

I agree, since there may want to be player-specific functionality. (for example, player one can trample crops but player two cannot)


I have no clue what is happening (installation issue with wheel)

I've been trying to install pyscf for hours and it just keeps giving me this error.  I have wheel and cmake installed.

Hi @onhole , thanks for raising this issue. What operating system are you using?

64-bit operating system, x64-based processor

Hi @onhole , thanks for raising this issue. What operating system are you using?

64-bit operating system, x64-based processor

Is this windows by any chance? If yes, please see issues #1857 , issue #910 and issue #750 .

Is this windows by any chance? If yes, please see issues #1857 , issue #910 and issue #750 .

Yes I have a windows.  Is pyscf not supported for windows?

That is my impression. From reading the past issues, you can try wsl and install it there.

Thank you for your quick responses.  I installed pyscf on wsl but still cant seem to use it in Jupyter notebook.  I opened my jupyter notebook with anaconda prompt.

What happens if you just do "import pyscf" in the notebook?

This is what happens:

On the wsl, I assume you can do "python" and then when the python console opens, you can say "import pyscf" and it works? Is your notebook running on the wsl?

On the wsl, I assume you can do "python" and then when the python console opens, you can say "import pyscf" and it works? Is your notebook running on the wsl?

i got it to work.  I just opened up ubuntu application and reinstalled qiskit.  I don't have anaconda python on the Ubuntu wsl though.  Will that be a problem?

I'm not entirely sure. To get started, I'd recommend running simple python programs on the wsl, running pyscf tests, and maybe reading more on python on wsl. Good luck, thanks for trying out pyscf! Feel free to post further questions.

Question to follow up. I am also trying to access qiskit_nature via the PySCF driver. I have followed most of those steps to achieve a PySCF installation through wsl on ubuntu. How do you then get VS code to recognize the wsl environment as a kernel to run a jupyter notebook through?


Bug in v1.3.1 - missing icons settings in Appearance

Missing icon settings in General

Hey!
Thank you for this.
It was my mistake. I just fixed: https://github.com/DenysMb/ChatAI-Plasmoid/releases/tag/1.3.2
With plasmoidviewer not working I need to do changes locally in $HOME/.local/share/plasma/plasmoids/ChatAI-Plasmoid and, after test, I copy the code to my local project and push the changes. Doing this I pushed the changes from ConfigGeneral to ConfigAppearance without realize.
Now I just did a link between both folder until the problem with plasmoidviewer got fixed.


Upgrade collector version

Summary
Upgrade the collector versions to v0.84.0.

Implemented with #24.


Update second bullet to include "custom" -- custom visuals not supported

Per this thread, the second bullet I believe should specify report page tooltips are not supported for "custom" PowerBI visuals. https://community.powerbi.com/t5/Desktop/Report-tooltips-are-not-supported-for-Power-BI-visuals/td-p/1828796

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

ID: 97cbbb3e-3916-4340-4ddc-67bf22159bf3
Version Independent ID: 5b620628-1c10-b0bb-bd4d-1fd229260ea1
Content: Using report tooltip pages in Power BI - Power BI
Content Source: powerbi-docs/create-reports/desktop-tooltips.md
Service: powerbi
Sub-service: pbi-reports-dashboards
GitHub Login: @maggiesMSFT
Microsoft Alias: maggies

Thanks for your comment, @BNN-Darren . This issue has been assigned to the doc author for review.

Hi @BNN-Darren -- agreed, that makes it clearer. I've updated the article; change will be live Mon afternoon Mar 21 Pacific time.
Thanks!


Watch for new version of the requests library

🐞 Bug Report
This is just a note to self to watch for a new release of the requests python library that either removes charset-normalizer as a dependency or allows usage of charset-normalizer > 3.0.

update, this issue has been addressed by the requests library as discussed here
https://github.com/psf/requests/issues/6288#issuecomment-1319988497
It's been added to the requests 2.29.0 milestone, when that is released we can update charset-normalizer.

This issue was addressed thru the emanifestpy package in PR  https://github.com/USEPA/e-manifest/pull/1572


chore: Multi-select was not translated in the user lists

This one had no translation.

Codecov Report
Attention: Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Project coverage is 7.01%. Comparing base (4d9c7fc) to head (9f1421d).
Report is 455 commits behind head on develop.

Files with missing lines
Patch %
Lines

...pp/lib/pages/product/common/product_list_page.dart
0.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##           develop   #5834      +/-   ##
==========================================
- Coverage     9.54%   7.01%   -2.54%
==========================================
  Files          325     413      +88
  Lines        16411   22515    +6104
==========================================
+ Hits          1567    1580      +13
- Misses       14844   20935    +6091

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


mvfst receive data fail from quic-go

Hi,
We use quic-go to start a server and want to use mvfst work as a client. The quic-go server is started as follows:
listener, err := quic.ListenAddr("<IP_ADDRESS>:4242", generateTLSConfig(), nil)
func generateTLSConfig() *tls.Config {
key, err := rsa.GenerateKey(rand.Reader, 1024)
if err != nil {
panic(err)
}
template := x509.Certificate{SerialNumber: big.NewInt(1)}
certDER, err := x509.CreateCertificate(rand.Reader, &template, &template, &key.PublicKey, key)
if err != nil {
panic(err)
}
keyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(key)})
certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER})
tlsCert, err := tls.X509KeyPair(certPEM, keyPEM)
if err != nil {
	panic(err)
}
return &tls.Config{
	Certificates: []tls.Certificate{tlsCert},
	NextProtos:   []string{"quic-echo-example"},
}

}
Then we run the mvfst tperf as follows:
tperf -duration 1 -host <IP_ADDRESS> -mode client -port 4242 -v=4
However, it always stops with the following error info after running 10s+:
I1230 08:27:59.497284  3295 QuicReadCodec.cpp:274] Client cannot read key phase one packet server=42c78f7f client=
I1230 08:27:59.497326  3295 QuicReadCodec.cpp:274] Client cannot read key phase one packet server=42c78f7f client=
I1230 08:27:59.580900  3295 QuicReadCodec.cpp:274] Client cannot read key phase one packet server=42c78f7f client=
I1230 08:28:00.339814  3295 QuicReadCodec.cpp:274] Client cannot read key phase one packet server=42c78f7f client=
I1230 08:28:00.339854  3295 QuicReadCodec.cpp:274] Client cannot read key phase one packet server=42c78f7f client=
I1230 08:28:02.421409  3295 QuicTransportBase.cpp:2473] lossTimeoutExpired Exceeded max PTO client CID= server CID=42c78f7f peer address=<IP_ADDRESS>:4242
I1230 08:28:02.421435  3295 QuicTransportBase.cpp:328] Closing transport due to abandoned connection client CID= server CID=42c78f7f peer address=<IP_ADDRESS>:4242
I1230 08:28:02.421447  3295 QuicTransportBase.cpp:2747] Clearing datagram callback
I1230 08:28:02.421454  3295 QuicTransportBase.cpp:2750] Clearing 0 peek callbacks
E1230 08:28:02.421465  3295 tperf.cpp:719] TPerfClient error: Connection abandoned; errStr=Exceeded max PTO
Best regards

By the way,
Tried quic-go and lsquic client and both worked well with same server.

Tperf client does not send a request to the server. It's expects the server to start sending data immediately upon accepting the connection (like iperf). The code you shared doesn't show if your server implementation is doing that. If your server is expecting a request, you probably want to use hq from the proxygen repo: https://github.com/facebook/proxygen/tree/main/proxygen/httpserver/samples/hq.
In general, you can check the QUIC interop dashboard to see if Mvfst has any issues with other QUIC implementations: https://interop.seemann.io/. This uses hq for testing Mvfst as a server and a client.
If the problem persists, please share a full main.go file to reproduce the issue.

Hi jbeshay,
Yes , the server start sending data immediately upon accepting the connection. And tperf client works for some time and will stop with previous error info. Attached full main.go.
For tperf, adding following setting to support version verification and use default TransportSetting.
main.go.zip
quicClient_->setSupportedVersions({QuicVersion::QUIC_DRAFT});

Thanks @raulftang. I am not able to reproduce the behavior you are seeing. I compiled your main.go file and was able to run tperf successfully after I made the following changes to tperf:

Set quic version as you mentioned.
Use the same ALPN in fizzClientContext as you have for the server (quic-echo-example).

Here is the output I get:
Server:
./main
stream write fail

Client:
./tperf -duration 1 -host <IP_ADDRESS> -mode client -port 4242
I0105 15:16:38.084794 2176165 tperf.cpp:763] TPerfClient connecting to <IP_ADDRESS>:4242
I0105 15:16:38.087875 2176165 tperf.cpp:673] TPerfClient: onTransportReady
I0105 15:16:39.088536 2176165 tperf.cpp:683] TPerfClient connection end
I0105 15:16:39.088603 2176165 tperf.cpp:604] Received 91557000 bytes in 1 seconds.
I0105 15:16:39.088614 2176165 tperf.cpp:606] Overall throughput: 698.524Mb/s
I0105 15:16:39.088645 2176165 tperf.cpp:610] Average per Stream throughput: 698.524Mb/s over 1 streams

Thanks @jbeshay , verry sorry for missing some important info.
I also made following change to keep tperf running.
In timeoutExpired function, I comment "quicClient_->closeNow", and restart the timer at the end. Then it will run about 10s before fail.
void timeoutExpired() noexcept override {
//not close client and keep running
// quicClient_->closeNow(folly::none);
constexpr double bytesPerMegabit = 131072;
LOG(INFO) << "Received " << receivedBytes_ << " bytes in "
<< duration_.count() << " seconds.";
LOG(INFO) << "Overall throughput: "
<< (receivedBytes_ / bytesPerMegabit) / duration_.count()
<< "Mb/s";
// Per Stream Stats
LOG(INFO) << "Average per Stream throughput: "
<< ((receivedBytes_ / receivedStreams_) / bytesPerMegabit) /
duration_.count()
<< "Mb/s over " << receivedStreams_ << " streams";
if (receivedStreams_ != 1) {
LOG(INFO) << "Histogram per Stream bytes: " << std::endl;
LOG(INFO) << "Lo\tHi\tNum\tSum";
for (const auto bytes : bytesPerStream_) {
bytesPerStreamHistogram_.addValue(bytes.second);
}
std::ostringstream os;
bytesPerStreamHistogram_.toTSV(os);
std::vectorstd::string lines;
folly::split("\n", os.str(), lines);
for (const auto& line : lines) {
LOG(INFO) << line;
}
}
//reset receivedBytes and restart timer
averageThroughput();
receivedBytes_ = 0;
eventBase_.timer().scheduleTimeout(this, duration_);
}

Now I am able to reproduce the issue. The root cause is that quic-go automatically triggers a key update every 100K packets: https://github.com/lucas-clemente/quic-go/blob/84e03e59760ceee37359688871bb0688fcc4e98f/internal/protocol/params.go#L183
Mvfst does not yet support key updates, which is why tperf is unable to decrypt any packets after the key update causing the connection to timeout.

Thanks @jbeshay,
Got it. I'll check quic-go to switch key update off or other measure.


Markdown links are not rendered properly in header and property descriptions

When the description of a header has mark down urls it is not rendered and shown as text instead

yaml
responses:
'200':
headers:
RateLimit-Limit:
type: string
description: 'The request limit quota for the time window closest to
exhaustion. See rate limits
for more information.
Example using re-doc

Thanks Alex. Duplicate of https://github.com/stoplightio/elements/issues/1092 so please subscribe to that one for updates.

Perfect thanks. Sorry to raise a dupe