Fix property/method filtering in extension_api_dump.cpp

fix #64429
Commit 24c79760e712b388a7bb12535f0e94db54742448 add a is_property_accessor attribute to extension_api.json in order to simplify the "don't expose the property accessors in your binding" rule @reduz was talking about

rebased ;-)

In principle, this makes sense to me!
However, testing this and looking at the extension_api.json, I'm a little worried we'll end up with a messier API than we'd like.
For example, looking at AudioStreamPlayer, with this PR we end with these two new methods:  _set_playing() and _is_active(). They are are both property accessors, however:

In a language binding without properties, we'd probably want to expose them as set_playing and is_active (without the leading underscore), so it doesn't feel quite so weird calling them. I suppose the binding generator could see that "is_virtual" is false, and then rename to not have the underscore (assuming the name isn't already taken)?
These are both private methods on the C++ class on the Godot side. So, from a Godot module, we actually wouldn't be able to call them in the normal C++ way, which I think is probably intentional in this case? In a Godot module, you'd call play() or stop() rather than _set_playing(), and is_playing() rather than _is_active(). Maybe we also need an "is_private" property on methods, so we can treat the ones that were intentionally hidden from the C++ module API differently?

Before unleashing all these new methods on the GDExtension bindings, I think we need to make sure they have the tools to do something nice with them. Or, maybe even clean-up the names of some of them? Or, remove some? (Like in the case of AudioStreamPlayer::_is_active, it has the exact same implementation as AudioStreamPlayer::is_playing() - we could maybe just get rid of the former?)

I've rebased this PR and modified it to only expose the methods that are used as property accessors of non-hidden properties, as discussed in the comments above.
I have also dropped commit f0ee3de9ef1ca2e601a97b9d5c2f94614ed5da0a since it doesn't seem wanted (https://github.com/godotengine/godot/pull/64825#discussion_r1097849627). However, this means we now expose members like the Control::layout_mode property that use the type Control::LayoutMode which is an unexposed enum[^1].
GDExtension language bindings can workaround this by using int, like we currently do in the C# bindings:
https://github.com/godotengine/godot/blob/6cd2876c98e971e9abd3471eb76f958477df6658/modules/mono/editor/bindings_generator.cpp#L3355-L3358
Unfortunately, this means that if we ever expose the enum it could be a breaking change and I don't think our current compat checks handle this scenario. It's also weird to have members in extension_api.json with an unexposed type.
The rebased branch can be found on https://github.com/godotengine/godot/commit/cbb151a27589981775d381e5928752e7b8d0e5cf.
And here's the before and after of the generated extension_api.json:

extension_api.before.json
extension_api.after.json

@touilleMan Are you able to continue working on this PR? Otherwise I'd be willing to take over for you.
[^1]: Naturally, this makes the godot-cpp CI check fail.

In GDExtension bindings that don't have properties (like godot-cpp), just exposing these underscore functions means we end up with a public API full of function names that start with an underscore.

Can't the godot-cpp bindings generator generate these methods as private/protected? Or just not generate them (moving the filter to godot-cpp) since we have no use for them.
My intention with "removing the filter" was just so that language bindings that need those methods to implement properties can use them. I didn't mean for these methods to be exposed in public API. That is to say, language bindings should probably avoid exposing methods that start with an underscore (thus moving the filter from Godot to the language bindings generator).
For example, in the C# GDExtension bindings I have no intention of exposing these methods, I'll only use them to implement the properties that need them.

For example, with Control::_set_layout_mode(), it was explicitly decided that that shouldn't be part of the public API or used by code, it's only meant for use by the editor.

Right, but it's used by the Control::layout_mode property so unless we expose the method somehow I can't expose the property in C#. This is a property that is already exposed in the C# scripting bindings, and it's also accessible from GDScript.
That said, the Control::layout_mode property has the PROPERTY_USAGE_INTERNAL flag so I agree it's not meant to be used by users. A better example would be Control::global_position, I'm pretty sure we want to expose this property but the setter is Control::_set_global_position so I can't generate the property in the C# GDExtension bindings.

Can't the godot-cpp bindings generator generate these methods as private/protected? Or just not generate them (moving the filter to godot-cpp) since we have no use for them.

Sure, it could. However, godot-cpp does actually need these methods too.
We don't need them in order to make properties, because we don't have a good way to do properties in C++, but these filtered methods mean there are properties on the Godot side that godot-cpp can't set, and we should have the ability to set any property that any other language binding can set.
So, what I really think we need to do, is go through the methods that start with an underscore, and determine which really should be part of the public API, and rename those. Then godot-cpp will have access to them under nice friendly names, and so will all the bindings that are going to use them as setters and getters for properties.

That said, the Control::layout_mode property has the PROPERTY_USAGE_INTERNAL flag so I agree it's not meant to be used by users. A better example would be Control::global_position, I'm pretty sure we want to expose this property but the setter is Control::_set_global_position so I can't generate the property in the C# GDExtension bindings.

Yeah, I think this needs to be evaluated on a case-by-case basis, to determine which should really be public.

Discussed at the GDExtension meeting and we agreed that the filtering should not be removed because there are cases that we don't want to expose the methods. If we want to expose some specific ones we should remove the underscore.
Otherwise we would have to create another filter to remove the ones that we really don't want to expose.

[...] these filtered methods mean there are properties on the Godot side that godot-cpp can't set, and we should have the ability to set any property that any other language binding can set.

Doesn't this mean we should expose all of them? For example, Control::_set_layout_mode can be used from GDScript throught the layout_mode property (although we discourage it by hidding it, but it's still available).

Discussed at the GDExtension meeting and we agreed that the filtering should not be removed because there are cases that we don't want to expose the methods.

My intention is not to remove the filtering entirely, only for property accessors. I was also thinking that keeping the underscore could be used as a convention for language bindings to treat these methods as internal and avoid exposing them (only use them for property accessors).
I thought this would be a good compromise for now, until we get around to decide whether to expose these methods properly or not. But since the team decided against it, let me take a look at the list of methods again and I'll see if I can find some low hanging fruits.

[...] these filtered methods mean there are properties on the Godot side that godot-cpp can't set, and we should have the ability to set any property that any other language binding can set.

Doesn't this mean we should expose all of them? For example, Control::_set_layout_mode can be used from GDScript throught the layout_mode property (although we discourage it by hidding it, but it's still available).

Hm, exposing layout_mode to GDScript feels like it might be an accident? Given that it uses PROPERTY_USAGE_INTERNAL.
@vnen Should properties with PROPERTY_USAGE_INTERNAL be accessible to scripts?
For godot-cpp: We want all the property accessor methods to be available as normal public methods, except for the ones for internal properties that only exist for storage or the editor. So, almost all of them. :-) But if they're going to be normal public methods that we want folks to call, they shouldn't start with an underscore.

We want all the property accessor methods to be available as normal public methods, except for the ones for internal properties that only exist for storage or the editor.

That's what I thought you'd say, so here's the list:
List

Animation

_set_capture_included

AudioStreamPlayer

_set_playing

AudioStreamPlayer2D

_set_playing

AudioStreamPlayer3D

_set_playing

Control

_set_anchor
_set_position
_set_size
_set_global_position

Image

_set_data
_get_data

MultiMesh

_set_transform_array
_get_transform_array
_set_transform_2d_array
_get_transform_2d_array
_set_color_array
_get_color_array
_set_custom_data_array
_get_custom_data_array

OptionButton

_select_int

Polygon2D

_set_bones
_get_bones

ShapeCast2D

_get_collision_result

ShapeCast3D

_get_collision_result

In some of these, the internal method seems to only exist to workaround the lack of overload support in ClassDB. For example, a method Control::set_global_position already exists and it's exposed but it has additional optional parameters which I imagine is what prevents us from using it as a property accessor and why Control::_set_global_position exists.
It's also worth noting that making a method a property accessor seems to hide it. For example, in OptionButton there's already a select method we could use instead of _select_int as the property accessor for the selected property. But doing so hides the select method which is probably not what we want to do.
In the case of MultiMesh, all of those methods (and their respective properties) are inside a #ifndef DISABLE_DEPRECATED block, it seems they only exist for compatibility with Godot 3.
And then, for some of these the corresponding property may have been intended to be internal (e.g.: Image::data? Polygon2D::bones?).


Missing thinCapacityAllocatedInKm in Statistics struct

Hi,
I tried to use your library but it miss at least one useful metric :
ThinCapacityAllocatedInKb                    int `json:"thinCapacityAllocatedInKm"`
When EMC will fix the typo issue it should end with "Kb" instead "Km".
Do you need a PR ?
Regards,

Hi @redsux !
PRs are definitely welcome! Can you link to the line in the code where you've found a typo? I've looked around, and cannot find it myself. I also cannot find a thinCapacityAllocatedInKb field described at all in the ScaleIO Gateway API docs. It's possible I'm looking at old docs...
And now I just looked at Rev 02 of the ScaleIO User Guide for 2.0.x, and see what you are talking about. thinCapacityAllocatedInKm is actually in the docs. I'd have to do a bit of testing and see what is actually coming back from the Gateway, and we could definitely add that field into the struct so that you can pull it out. Good catch!  Thank you, and again, a PR is most certainly welcome as well.

This repo is no longer maintained and I am closing out issues before archiving it.
The project is now maintained by Dell at https://github.com/dell/goscaleio


add public src

Drift Video-https://video.drift.com/v/aboE1pw7KBqYraEjF0LfytaN7BCCutbTD4T7t16nxSY/
Screenshots:

Metric
Value

alert_status
:white_check_mark: OK

bugs
0

code_smells
2

reliability_rating
A (0 Bugs)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0


Add extra jar manipulations

Add AllCookies which returns all cookies addressed to a path or any
subpath. Also add RemoveCookie to remove a particular cookie.

Looks reasonable, but I wonder if a simpler method might be easier and more versatile.

LGTM - but I'm feeling nitpicky

LGTM thanks!


[Regression] [Layout] height:0 with overflow:hidden ignores height

I'm not sure where this came in 0.12 or 0.13 but in 0.11 it appears to work fine.
This renders at full height on v0.13 (height is ignored) but renders correctly on v0.11.4
<View style={{height:0, overflow:'hidden', backgroundColor:'#ff0'}}>
  <Text>Content</Text>
</View>

This renders at 1 pixel height
<View style={{height:1, overflow:'hidden', backgroundColor:'#ff0'}}>
  <Text>Content</Text>
</View>

RNPlay of it on v11.4 working correctly
https://rnplay.org/apps/EsM5Qw

This came in .12. There is another issue filed for this as well.

Ah, thanks. I did try to find if it had already been posted but I guess "0" and "height" crop up a lot. I'll close this one to keep the issues focused.


feature: run npm install after git clone

Is your feature request related to a problem? Please describe
We have husky and commit-lint integrated locally to maintain good commit messages.
But if the user doesn't run npm install, the pre-commit hook will not be installed, and commit-lint can't be run and later will cause an issue in the CI.
Describe the solution you'd like
Add a post-clone hook natively [without husky or any js library], which will

Run npm install if nodejs and npm is available
Show a message to the user [you can suggest a better message as well]

Node.JS NPM or NPX not found. Please install this tool.
After installing Node.JS, run `npm install`

I would like to solve this issue, please assign it to me.

Closed, as this is going to be part of documentation !


Package slack does not work on MacOS 15 Sequoia

Describe the bug
Package slack does not work (cannot be installed/used/unpacked) on MacOS 15 Sequoia aarch64-darwin.
Steps To Reproduce
Steps to reproduce the behavior:
❯ NIXPKGS_ALLOW_UNFREE=1 nix-shell -p slack
this derivation will be built:
  /nix/store/dmqcicahi0rzcxbirizrmifnybyxc9l4-slack-4.39.95.drv
building '/nix/store/dmqcicahi0rzcxbirizrmifnybyxc9l4-slack-4.39.95.drv'...
Running phase: unpackPhase
unpacking source archive /nix/store/l7cg4xwblydxw5zs0q4yw9q33cnnabrz-Slack-4.39.95-macOS.dmg
source root is Slack.app
Running phase: patchPhase
Running phase: updateAutotoolsGnuConfigScriptsPhase
Running phase: configurePhase
no configure script, doing nothing
Running phase: buildPhase
no Makefile or custom buildPhase, doing nothing
Running phase: installPhase
mkdir: cannot create directory '/nix/store/r8fs4dyh6752ppjvv8qhpa7j6z7rb2zx-slack-4.39.95/Applications/Slack.app': Operation not permitted
error: builder for '/nix/store/dmqcicahi0rzcxbirizrmifnybyxc9l4-slack-4.39.95.drv' failed with exit code 1;
       last 11 log lines:
       > Running phase: unpackPhase
       > unpacking source archive /nix/store/l7cg4xwblydxw5zs0q4yw9q33cnnabrz-Slack-4.39.95-macOS.dmg
       > source root is Slack.app
       > Running phase: patchPhase
       > Running phase: updateAutotoolsGnuConfigScriptsPhase
       > Running phase: configurePhase
       > no configure script, doing nothing
       > Running phase: buildPhase
       > no Makefile or custom buildPhase, doing nothing
       > Running phase: installPhase
       > mkdir: cannot create directory '/nix/store/r8fs4dyh6752ppjvv8qhpa7j6z7rb2zx-slack-4.39.95/Applications/Slack.app': Operation not permitted
       For full logs, run 'nix log /nix/store/dmqcicahi0rzcxbirizrmifnybyxc9l4-slack-4.39.95.drv'.

Expected behavior
Slack works on MacOS 15 Sequoia
Additional context
Might be related to the changed order in PATH
For full logs, run 'nix log /nix/store/dmqcicahi0rzcxbirizrmifnybyxc9l4-slack-4.39.95.drv'
❯ nix log /nix/store/dmqcicahi0rzcxbirizrmifnybyxc9l4-slack-4.39.95.drv
warning: The interpretation of store paths arguments ending in `.drv` recently changed. If this command is now failing try again with '/nix/store/dmqcicahi0rzcxbirizrmifnybyxc9l4-slack-4.39.95.drv^*'
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/l7cg4xwblydxw5zs0q4yw9q33cnnabrz-Slack-4.39.95-macOS.dmg
source root is Slack.app
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
no configure script, doing nothing
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
no Makefile or custom buildPhase, doing nothing
Running phase: installPhase
@nix { "action": "setPhase", "phase": "installPhase" }
mkdir: cannot create directory '/nix/store/r8fs4dyh6752ppjvv8qhpa7j6z7rb2zx-slack-4.39.95/Applications/Slack.app': Operation not permitted

Notify maintainers
@mmahut
@teutat3s

Add a :+1: reaction to issues you find important.

This is not reproducible, as for me slack works, but for example iterm2 fails with the exact same error.
filesystem error: in create_directory: Operation not permitted ["/nix/store/81y294rm8s9ffnz5d9x98blxl9m61gh4-iterm2-3.5.4/Applications/iTerm2.app"]
error: some substitutes for the outputs of derivation '/nix/store/mvp8x0a151ri3cgh401x32jz4arqska1-iterm2-3.5.4.drv' failed (usually happens due to networking issues); try '--fallback' to build derivation from source
error: 1 dependencies of derivation '/nix/store/dvz39vznr5zbgssqyyfkn5k5lgxlz22z-home-manager-applications.drv' failed to build
error: 1 dependencies of derivation '/nix/store/5z24d7fribxr2926yvyfy46iyndbyxky-home-manager-fonts.drv' failed to build
error: 1 dependencies of derivation '/nix/store/1dxravhkjfghy75vwh74qqgys2w5fzaf-home-manager-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/07wil09if63r9p5f2v471aig726lz81s-home-manager-generation.drv' failed to build

The problem is resolved with the latest nix/nixpkg version.


No more update

Hello,
Since an undefined time, the updates are not applied to the widget, but are in my local calendar. I added a new online ics source with the app icsx5, but nothing changed in the widget, only in my local calendar.
I reinstalled the app, and now, the widget is empty whatever i do.

Looks like a duplicate of https://github.com/plusonelabs/calendar-widget/issues/302 , please see that issue.

No, it's not. My problem has nothing to do with the update button, it's about an automatic update that doesn't work anymore.

As I found out during investigation https://github.com/plusonelabs/calendar-widget/issues/298 button not working and no automatic updates are related problems, caused by changing Android rules. Please read discussion in #298, maybe you will figure out the cause of your current problem.


Add dependabot workflows for submodules.

Changes

Adds additional configurations to cover the rest of the go modules in ther repo.
Module list gotten via: find . -type f -name go.mod
/kind misc
Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[x] Has Docs included if any changes are user facing
[x] Has Tests included if any functionality added or changed
[x] Follows the commit message standard
[x] Meets the Tekton contributor standards (including
functionality, content, code)
[x] Has a kind label. You can add one by adding a comment on this PR that contains /kind <type>. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep
[x] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings)
[x] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
NONE

/test check-pr-has-kind-label

cc @pritidesai

/test pull-tekton-pipeline-integration-tests


Add gps drop for dropping commits

It would be convenient to have a gps drop 3 command for dropping a commit from the patch stack. Essentially this involves doing a rebase and leaving out said commit. This is already possible today but would save having to edit a todo.

Feels like this is related to #138
It would be nice to support non-interactive gps rebasing against specific patch indexes like: edit, drop,  maybe even fixup where it defaults to dropping into the patch below it, otherwise it could take a second optional parameter that fixes it up into the given patch index like gps fixup 3 1 This would assume that it can move without causing merge conflicts.


HttpClient PostAsync while using Web Proxy

I'm using Titanium Web Proxy to be able to monitor the traffic on my network, with the end goal of being able to get information about each URL visited, and potentially block them.
I've got it to the point where I can see the incoming URLs, but everytime I try and run HttpClient.PostAsync from within my application, I'm never able to get a response.  If I turn the proxy off, it works just fine.

I just realized this question was asked previously, but it doesn't look like there was a resolution. Issue is #48.
The code to run PostAsync is as follows:
            using (var client = new HttpClient())
            {
                var values = new Dictionary<string, string>
                {
                    { "url", url }
                };

                var content = new FormUrlEncodedContent(values);
                var request = await client.PostAsync("http://sitereview.bluecoat.com/rest/categorization", content);
                var responseString = await request.Content.ReadAsStringAsync();

                var category = CreateSiteInfoJson(responseString);

                return category;
            }

It hands indefinitely and eventually cancels the task on await client.PostAsync(...)

Thanks for reporting this bug. I am looking at it.
Meanwhile you should be able to post successfully if you disable ExpectContinue in HttpClient like below.
client.DefaultRequestHeaders.ExpectContinue = false;

Thanks!  Your ExpectContinue = false looks like it makes everything run smoothly.

Fixed in #64 on beta


Have curl follow redirects in compiling on linux docs

Was following these docs, and the URL redirects quite a bit (as the project moved under the Wasm org, and then points to an asset). Thus, Curl needs to follow these redirects to get the final asset :smile:
No Redirects

Redirects (this change)

@iximeow Made offline requested changes :smile: :+1:

Thanks!


fix: not working with Vite, no default export

@dipu-bd could I ask why you closed the PR?

I made a refactor of the entire file, which makes this PR irrelevant.
https://github.com/dipu-bd/vue-skycons/blob/master/src/skycons.js#L400

Thanks, I didn't saw that 👍🏼


[Feature Request] Ability to activate some sort of notification status, or parts of the appearance on a currently active touch button

The Motivation
I have a few touch buttons I keep out of the way which call scripts that do different things, such as turn on lights by making HTTP requests to my home automation system, etc. I find touch buttons are great for that. What would make them over-the-top great is if they could receive data and use it to subtly, or not so subtly, change their appearance.
The Solution
Similar to the current d-bus data ingest in which a menu can be dynamically created and opened, additional actions could be available to currently active touch buttons. One could be to breathe the opacity value of a thin colored ring/border highlight around the button to indicate that it has received some sort of information. Upon clicking on the button, the center ring could display a message payload relevant to the options available to the button, allowing me to then select the appropriate button to press based on the information I have just received.
In addition to colored border, perhaps configurable icons could display/flash occasionally where the button itself stays in a dim/faded state, but the icons become opaque and prominent every few seconds/minutes until acknowledged.
The Alternatives
Since I just thought of this, I have not really thought of alternatives when it comes to this particular application. The only real alternative I have at this point is finding another dedicated application to have persistent on-screen notifications, and up to this point, aside from Conky, which really isn't ideal for this. It took much longer than I would like to admit for just the simple setup that I currently have.
This is just a touch button and overlaying it on top of one of my Conky panels that displays Ok/Not Ok status of various services I have running on different systems, then I can start diagnostic scripts, or issue service restarts, etc:

It would be great to send notifications directly to a button since it is actionable, and much more easily customizable. Honestly, if this could have fixed placement Rect panels as well as circular buttons that could receive and display data, it could possibly even replace my Conky setup, but that is me just getting off track at this point.
I appreciate your time and consideration
Thanks,
-MH

I can definitely understand that some of that would be out of scope. I do appreciate the recommendations, though. I will be sure to give them a try in the next day or two. :+1:

I guess that I can close this issue. If there's anything, feel free to comment!


Installed the Pod yet getting an error on import

Inserted   pod 'Toaster', '~> 2.0' in the Podfile
Called pod install
Inserted import Toaster
No such module Toaster

@jsiddharth can you please share the sample project with me?

I had to manually add the Toaster pod to Linked Frameworks and Libraries.

Please mark this resolved.
Thanks
Siddharth
On Fri, Mar 24, 2017 at 12:17 PM, Jeon Suyeol<EMAIL_ADDRESS>wrote:

@jsiddharth https://github.com/jsiddharth can you please share the
sample project with me?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/devxoul/Toaster/issues/100#issuecomment-288946298,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AARvGBBs8zjSNYlqLUZ_ve-P0oKvEvB1ks5ro2bogaJpZM4MnFoa
.


az acr login without az login - should it work?

When I try to login to ACR using the "admin user" credentials I get the error "Get Token request returned http error: 400 and server response ... invalid_grant" indicating the token as expired.
My assumption is that the az acr login can be used using the admin user account without doing a az login first. Is this assumption wrong? Does this work only with docker login and az login is required by the az cli?
What I like to do is to use ACR build without first signing in to azure.

@tomko80 Could you describe your scenario a bit more. We would like to understand scenario here.  ACR build is an ARM operation and hence you just need to be logged into the AZ CLI.

@tomko80, we are closing this issue due to inactivities, but we can reactivate it if you can respond to our question.


CI image pipeline improvements

We should build images in CI and use those directly. Ideally, once a PR gets merged to main, it should also build and push images to dockerhup (post-merge action?).
I'm sure this is a well established patterns in other projects, so likely something we can pull from other places. The goal here is to minimise differences between what we are testing vs what's in our public docker hub and get our PR / review / merge process to not involve manual steps, like changing image names from dev -> latest before merging.
Adding as a backlog, not high priority.

Which images are you talking about here specifically? This would be:

easy for commander
absolute PITA for 6 cross-platform bitcoin core images

per https://github.com/bitcoin-dev-project/warnet/pull/506#discussion_r1742455141 , this is referring to the commander image. perhaps we start there and then look at the bitcoin core images separately ?

Sure, we did this before for the RPC image and I could easily port it over for the Commander

Done in #523


Add support for 'tenancy' option when launching VPC instances.

This is just a rebase of #395
Fixes #375
Fixes #395

Since Travis isn't enabled here, I've run the tests locally on Ruby 2.2.3p173 and everything looks kosher


[Bug] Breaks Create compatibility with Open Parties & Claims

It seems that both unenchanted and enchanted drills no longer work by default in chunks claimed with Open Parties & Claims until chunk protection is turned off by players. Normally they would work in claimed chunks if placed by the player who owns the chunk claim
I'm assuming it has to do with the fake player not being applied to the drills but I'm unsure

What version of Minecraft are you using that is causing the problem? Is this chunk protection by FTB Chunks?

Forgot to add that ;-;
This was on Forge 1.20.1, but it's likely that it also happens on 1.19.2
As for the chunk claim mod it's Open Parties & Claims, not FTB Chunks

This mod provides a configuration option where you can add FakePlayers to bypass chunk protection.

Open the config file located saves/[world-name]/serverconfig/openpartiesandclaims-server.toml
Edit this file as follow

#A list of fake players (UUIDs or names) that shouldn't be affected by any chunk claim protection if they try to access a chunk with building protection compatible with
#the chunk that the fake player's origin block is positioned in, e.g. claims with the same owner and block protection option values.
#This works great for fake players that are bound to the position of a specific placed block (origin block). Moreover, the mod supports fake players placed at a block
#next to the origin block, even if that means entering another chunk, e.g. in the case of the Integrated Tunnels mod, or if the origin block is touching the target block.
#The mod will try all positions next to the target block and the fake player as the possible position of the fake player origin block.
#This will always protect the target block if it or the fake player touch a claim with incompatible build protection. Avoid building on such claim edges.
#However, some fake players' origin blocks can be nowhere near the fake player or the target block, e.g. in the case of the Create mod, or there might be no origin block at all,
#e.g. NPCs that can move around. In this case, the mods that use such fake players require explicit support to be implemented. Although they might also sometimes
#be supported by default, if the fake players use UUIDs of actual players.
#Explicit support exists for the Create mod (requires an extension on Fabric) and you are not required to add anything to this list.
#Make sure to always test that claim edges are protected from outside interaction by fake players that you add to this list.
#Wondering where to get the UUIDs or usernames of specific fake players? You can check the source code of the mods that use them or politely ask the mod authors.
#For example ["41C82C87-7AfB-4024-BB57-13D2C99CAE77", "FakePlayerName"]
staticFakePlayers = ["[IntegratedTunnels]", "block_breaker", "contraption_block_breaker"]

Save the file and launch minecraft.

In the future, when reporting issues related to mod compatibility, please make sure to check the configuration options of the mods involved. Additionally, when submitting an issue, kindly include details about your environment, such as the Minecraft version, the versions of the mods you’re using, and any other relevant information. This helps in diagnosing and resolving the issue more effectively.
Thank you for your continued support of Create: Enchantable Machinery!


Deterministic map

Description
Currently the city is generated randomly based on the total number of lines of code.
This does not keep the consistency between small changes, every time the map is built tiles are all different from previous time no matter how small the change was.
Let's figure out how we can make a map stay more or less consistent from build to build and growing as repository grows.
Steps

Figure out clustering technique splitting whole city into districts (probably just one district for now with the center on the bottom)
Assign individual files to a set of blocks in each district based on a total size.

Figure out how to make assigning files to districts consistent.

Aggregate metrics for each block to determine the tile (e.g. specific number in a list of tiles in a tileset) and it's properties (e.g. primary color, based on dominant programming language, for example), make ordering of blocks consistent to keep their position intact.

Deterministic map implemented, not used for coloring yet, but that can be done easily by scanning the same set of files for primary language and all that.
Otherwise, it works at the moment and is more or less deterministic.
Once we need to better group by language or by folder structure proximity, we can try updating the algorithm to use those parameters instead of just pure file size and lines of code.

Closing it since we plan on letting players build maps instead of full auto gen.


markup and semantics

First and foremost, thanks for this! I also think it's great that this allows flexibility in the markup. However, I suggest either adding a role of header to the dt element (as in the WAI example), or better yet, dispense with all of the aria roles and go with a header-paragraph pattern (optionally making the latter a region). As it stands, the roles render the definition list as a generic container. This being the case, why not drop the definition list elements and just use a real header element plus either a generic block (e.g., ) or optionally use the region element?

Hi @plweil,
Thanks for getting in touch and for your suggestion! I'm trying to think back to why I didn't add role="header" with JavaScript. I think it was for 3 reasons;

I initially forgot...
Ideally, I want to get away from using the word header in my JS selectors as I think it can be confusing. Ideally, I want to do a refactor to change it to trigger.  I think I was planning on adding it in then.
If I add the role with JavaScript as I have done with all the other aria attributes I would need a new JavaScript selector. The "trigger" element (<button>) currently confusingly has the JS selector of js-badger-accordion-header.

I'm a little unsure about what you mean by

header-paragraph pattern

Would you mind showing me a simple example? Then I feel I can make the best decision for backwards compatibility as well as for making the accordion the best it can be.
Thanks again for your feedback.

I meant something similar to Heydon Pickering's Progressive Collapsibles. Basically a heading containing a button (the "Accordion Header"), followed by a div (the "Accordion Panel"). Does that help?
I think the WAI design patterns are not really intended as recommendations for implementation (at least not all of them). A number of them can be done "natively" with simple(r) html and less ARIA.
I came across your project while searching for an accessible accordion done in vanilla to replace the current one in our main WordPress theme. The theme is used campus-wide (UW–Madison), and this is part of a big push to improve web accessibility here.

Got it, that example makes a lot of sense. I did not know that about WAI patterns.
So how about I make the role="presentation" & role="region" optional. By default, they will be added but you can disable it if you wish. If I have time when doing it I could allow you to pass in an object so you could if you wanted to keep one of them;
const accordion = new BadgerAccordion(accordionDomNode, {
    // disable all roles
    roles: false

    // disable just region role
    roles: {
        region: false
    }
});

I feel this way I keep supporting what is already in place but give the choice to create a more flexible pattern if you wish. What do you think?
It's SUPER exciting for me that you might use the accordion for UW-Madison to improve accessibility! I'm going to put together a showcase of other developers using the accordion. If you use it would you be interested in featuring in it? (Especially if you would be following the "heading paragraph" approach). I think it would be really useful to other devs to see an example in the wild!

Hi Stuart,
I think making the region role an option is a good idea. But I am not sure about the presentation role. I'm still kind of trying to work this through in my head....presentation negates all semantics. It depends on what your markup is. If this is for backwards compatibility, I think the  may be sitting out there with no  container, unless you give the  the header role. Maybe that is what we were talking about initially (sorry, random memory loss)? If so, I think that will work. Then devs can disable these at their own peril, I suppose. But if you change the default markup to the Pickering pattern, then the presentation role is probably unwarranted (what would it be applied to? A ?) If we do use this accordion, I have to think about how to get it integrated with our WP theme (which gets uses node to build css and install js).

I'm also unsure now about the presentation role now... For backwards compatibility sake, I'm going to apply as an option this in the next update. Where the example below is the default;
const accordion = new BadgerAccordion(accordionDomNode, {
    roles: {
        region: true,
        presentation: true
    }
});

Your theme sounds interesting! I've not heard of using node to build assets for WP theme before.


[Build] Fix skipping tests when there are only documentation changes

Fixes #10373
Motivation
Tests should be skipped for PR builds that only contain documentation changes. This is currently broken
Modifications
Refactor logic to be less error prone. Use fromJSON function to parse a number in a string as a number.
Additional Context
#10276

@michaeljmarshall @eolivelli @aahmed-se Please review

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks


OV configurations alignment

Updated OV configurations to align with openvino.genai nncf_utils.py.

cc @AlexKoff88, @MaximProshin

@KodiaqQ , I still see some misalignment with genai. In genai we have 28 models, but only 26 here. Can you explain it?

@KodiaqQ , I still see some misalignment with genai. In genai we have 28 models, but only 26 here. Can you explain it?

As was noticed, the stablelm-epoch-3b-preview and llama-7b configurations are not applicable anymore, so I removed them.
Maybe @AlexKoff88 can confirm that as we discussed.

@echarlaix , can you please help to merge it?


[C#] using -p:PublishSingleFile=true leads to symbol not found on Alpine Linux.

What version of gRPC and what language are you using?
csharp - Grpc.Core reproduced with both 1.38.1 and 1.38.0
What operating system (Linux, Windows,...) and version?
Container base image: mcr.microsoft.com/dotnet/runtime-deps:5.0.7-alpine3.13-amd64
What runtime / compiler are you using (e.g. python version or version of gcc)
dotnet/sdk:5.0.301
What did you do?
I'm trying to run a very simple app with Grpc.Core, here are the steps to reproduce the error with just 3 files and 2 docker commands:
cat <<EOF > Program.cs
using Grpc.Core;
using System;
using System.Text;
var marshaller = new Marshaller<string>(Encoding.UTF8.GetBytes, Encoding.UTF8.GetString);
var method = new Method<string, string>(MethodType.Unary, "test-service", "test-method", marshaller, marshaller);
var channel = new Channel("spanner.googleapis.com:443", ChannelCredentials.Insecure);
var callInvoker = channel.CreateCallInvoker();
var text = callInvoker.BlockingUnaryCall(method, "spanner.googleapis.com", new CallOptions(), "request");
Console.WriteLine(text);
EOF

cat <<EOF > issue.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Grpc.Core" Version="2.38.1" />
  </ItemGroup>
</Project>
EOF

cat <<EOF > Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:5.0.301 AS build
WORKDIR /app
COPY issue.csproj ./
WORKDIR /app
RUN dotnet restore issue.csproj -r linux-musl-x64
COPY / .
FROM build AS publish
WORKDIR /app
RUN dotnet publish issue.csproj -p:PublishSingleFile=true -r linux-musl-x64 --self-contained true -c release -o out --no-restore
FROM mcr.microsoft.com/dotnet/runtime-deps:5.0.7-alpine3.13-amd64
# gRPC issue: https://github.com/grpc/grpc/issues/21446
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.8/main' >> /etc/apk/repositories && apk update --no-cache && apk add --no-cache bash libc6-compat=1.1.19-r11
WORKDIR /app
COPY --from=publish /app/out ./
ENTRYPOINT ["/app/issue"]
EOF

docker build -t issue .
docker run -it issue

What did you expect to see?
The application to run properly.
What did you see instead?
Those errors:
Error relocating /usr/lib/libgssapi_krb5.so.2: explicit_bzero: symbol not found
Error relocating /usr/lib/libgssapi_krb5.so.2: secure_getenv: symbol not found
Error relocating /usr/lib/libkrb5.so.3: explicit_bzero: symbol not found
Error relocating /usr/lib/libkrb5.so.3: secure_getenv: symbol not found
Error relocating /usr/lib/libk5crypto.so.3: explicit_bzero: symbol not found
Error relocating /lib/libcom_err.so.2: secure_getenv: symbol not found
Error relocating /usr/lib/libkrb5support.so.0: explicit_bzero: symbol not found

If I remove this -p:PublishSingleFile=true option in the Dockerfile, everything will run successfully.
Let me know if you need any complementary information around this. Thanks!
Note: the -p:PublishSingleFile=true option allows to significantly reduce the size of the container image.

I think the main problem is that you're running with the app under alpine linux (see FROM mcr.microsoft.com/dotnet/runtime-deps:5.0.7-alpine3.13-amd64). On alpine, we support Grpc.Core as "best effort" since alpine doesn't have the same libc as other linux distributions, which makes the support difficult.
This might be one of the cases where Grpc.Core has problems on alpine.
If you can use debian-based distro (e.g. buster) for your runtime image, it would probably solve the problem.

Thanks @jtattermusch, I didn't know about the best effort for alpine here.
The intent with alpine is to have a very small image and surface of attack:
mcr.microsoft.com/dotnet/runtime-deps     5.0.7-buster-slim-amd64   111MB
mcr.microsoft.com/dotnet/runtime-deps     5.0.7-alpine3.13-amd64     9.95MB

Hi @jtattermusch, for a learning perspective and out of curiosity, when you mentioned "best effort", are you referring to this recent announcement too? In the other words, is related to the fact that Grpc.Core for dotnet is going to be deprecated and grpc-dotnet is taking over?

Since the root cause of the problem is that the Grpc.Core nuget doesn't come with a alpine linux specific version of grpc_cshart_ext.so native library, I'm going to close this issue as a duplicate of https://github.com/grpc/grpc/issues/21446


Embed a report web part in SharePoint Online  - report isn't in POwer BI Manage permission yet it's showing up on SharePoint Online communication site

Unlike what's described in the documentation, I see that the report is showing for a user without permission granted from the Power BI report when the report is embedded in SharePoint Online on Communication site in which the user has read permission.
Permission setting: Test User
On SharePoint Online Communication Site: Read only
On Power BI Workspace manage permission:  None!
Result: Test User is viewing the report
Expected behavior: Test User won't be able to view the report unless it's granted from Power BI Workstat0 Direct Access as indicated on the documentation.

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

This issue is no longer reproducible on my end - MS Support reached out and able to reproduce the issue when we were on a call when the permission was  given then taken out- The report was still showing up (even after cache clear) even after permission was taken way.

Thanks for your comment, @gretchunkim.
This looks like product feedback or a product question, rather than documentation feedback. Looks like you already contacted support and got the issue resolved. If you haven't. you can submit product feedback or feature ideas by going to Power BI Ideas.
You can also engage with the Power BI engineering team by being active in the Power BI Community.


[SectionedNavigation] adds hideSubItems option

adds hideSubItems option, when this is set to true only the heading for each section will appear (see hidden subitems example below)
updates design to use similar patterns as other dr-ui elements
replace input for filter with mr-ui ControlText

subitems
hidden subitems
filter input

fixes #65

@colleenmcginnis thanks for catching that! I updated the styles here's what we have now:


Is order of packet recieve guaranteed ?

Got a question - not so much an issue - am working with protobuffers that i want to stream over tcp - and i came across your project here which really sounds like the same - but if i would try to use this as base for :

a client streams a video to the server
the server sends the video stream to all connected clients ( except the sender )
the clients will show the video

Clients is a c-sharp application.
Would your project here guarantee the order in which the packets are sent or do i need to implement some ordering id in the packet ?
Would you think it will be fast enough ?
Would you have any idea how i could 'broadcast'an incoming stream onto all connected clients ?
And the fixes you committed will they become master soon ?

Packet ordering is as the networking stack determines it. So for TCP, you should be fine.
I haven't had time to maintain this unfortunately, and I need to test the proposed fixes and simply haven't had time. I apologize for that.


How to save DNS records?

I know this isn't an issue with the project itself and I'll close it asap but I was wondering how I might go about saving the DNS records I set.

It is important to remember that these DNS records are not permanently added to the server. They only exist for the length of the particular request. After that, they are destroyed.

I don't understand what the last part means because I thought DNS lookups were just that — looking up the DNS for a domain. I don't see how that would save DNS changes.

Sidenote, as I'm updating this project for ES6 I am noticing a good amount of issues ranging from inconsistent coding styles, repeated required variables, non-declared variables, and so on. I read the conversation in #5 and well, the amount of changes I'm making (whitespace minimization included) is too much for a PR so I'm gonna fork this over to my GitLab server.


[1.12] LAN Player Disconnect After Cyclic Error

Minecraft version & Mod Version:
Minecraft 1.12
Cyclic 1.79
Single player or Server:
Single Player Hosted LAN
Describe problem (what you were doing / what happened):
I was using the Cyclic Sack of Holding to pick up a storage crate.  The game lagged out and the other player got disconnected.
Crash log (if any):
No crash log but this was in the game log at the time of disconnect: https://pastebin.com/6RWLcdpm
(If this is a suggestion and not a bug report, delete all this and just write your suggestion!)

Cant replicate this in my lan world but the crash log shows me where its happening. ill try to get an error handler in there, im guessing some sort of crash caused by lag

Has it happened many times or just the once? I can patch it just in case .. just curious

Lots of times truthfully

This should patch it https://minecraft.curseforge.com/projects/cyclic/files/2468801


--config as a global flag/env var

Hi,
Thanks for a great tool! However, it would be super great if the --config flag could be passed globally. I.e. that all commands accepted it but did not use it. We are generating the ruff config and wrapping the tool execution in a script and currently we have to parse the subcommand to know when to add --config or not. An environment variable to control the config file would also work fine.

Also noticed that some global flags (like -v) does not work with some subcommands:
$ ruff -v rule
[2024-02-08][10:52:40][ruff_cli::resolve][DEBUG] Using Ruff default settings
[2024-02-08][10:52:40][ruff_cli::commands::check][DEBUG] Identified files to lint in: 450.238µs
[2024-02-08][10:52:40][ruff_cli::commands::check][DEBUG] Checked 1 files in: 35.4µs
rule:1:1: E902 No such file or directory (os error 2)
Found 1 error.

so it looks like it is trying to run check on a file called rule because I added the -v flag.

I think this might be solved in the next release via https://github.com/astral-sh/ruff/pull/9599, which lets you pass any argument via the --config flag. E.g., you can pass --config "lint.isort.combine-as-imports=false". Does that work for you?
Separately... the ruff -v rule thing is a really specific failure, which is that when we added subcommands (like ruff check), we kept ruff /path/to/file.py working for backwards-compatibility. So if you pass some non-subcommand, then Ruff thinks you're trying to check a file named -v. (We'll fix this in the future when we deprecate calling ruff without a subcommand.)

Unless I have missed something, I do not think so. We need a way to wrap the ruff binary such that we can always pass the --config flag without implementing our own subcommand parsing. Think of our wrapper as a "ruff but with this config instead of the default".

Can I ask what subcommands you're running?

All of them. I.e. we expose a wrapped ruff executable so that users can use like it was the original ruff, only with our default config. Alas, they might run ruff version, ruff check or ruff linter. We just want to make sure that all users get a default config.

I quite like pytest's solution to this problem — they allow arbitrary CLI options to be set using the PYTEST_ADDOPTS environment variable: https://docs.pytest.org/en/7.1.x/example/simple.html

In our case it does not have to be environment either. But the other tools we use (pytest, mypy, black pylint, flake8) can be passed their equivalent --config parameter regardless of which subcommand/flags are used.

Making --config a global option makes sense to me

Separately... the ruff -v rule thing is a really specific failure, which is that when we added subcommands (like ruff check), we kept ruff /path/to/file.py working for backwards-compatibility. So if you pass some non-subcommand, then Ruff thinks you're trying to check a file named -v. (We'll fix this in the future when we deprecate calling ruff without a subcommand.)

This was really confusing until I found this issue. Simply reporting the name of the file not found as part of the error message would have helped pin things down.


Comparer: Add baseline option

~Blocked by https://github.com/pfnet/pytorch-pfn-extras/pull/438.~

/test


Upgrade Bazel to 5.0.0

This is part of the work for compiling Sorbet on M1 macs
Upgrade Bazel to 5.0.0.
Motivation
The earlier version don't have some darwin_arm64 rules related to toolchains which prevents us from compiling to ARM64.
Test plan
Existing tests should cover it.

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_L7cxyizeG57Vlq
→ https://go/builds/bui_L7cx66nSPWnhe9

This failed in Stripe's CI due to inherited bazelrc options. We'll need to fix that before we can land this.

Stripe build fix PR: https://go/ps/pull/418401


[lint] Remove whitespace from existing source files

@hcallahan-lowrisc told me that it is not desirable to change code in the vendor directory, especially for something trivial like whitespace. I should change this pull request to only make whitespace corrections to files that are not vendored in.

For things like whitespace, if you feel strongly there is always the patching mechanism (see ibex/vendor/google_riscv-dv.vendor.hjson and /ibex/vendor/patches/google_riscv-dv/)

Ok, I have now changed this pull request to only remove the trailing white-space from the source code that is not vendored in.

Thanks for the cleanup, always welcome! It would be great to setup some more linting / pre-commit checks for this stuff at some point.

Yes, agreed. I'll have a look at that when I have time.


Add brunch to npm devDependencies

Ultimately I think we should move away from brunch and use Webpack which is what we all love and know but in the meantime let's add brunch to the package.json as long as it's being used

Thank you! 👍


Support testnet

AFAIK, we need to support it in Trade class having one of the parameter be testnet?

AFAIK, we need to support it in Trade class having one of the parameter be testnet? @louisinger

Where did u see this in Trade class ? Note that in buy/sell we can access the network type via the Identity class provided as a parameter.

https://github.com/tdex-network/tdex-sdk/blob/b82eac0135e61fef6111bf0bd17cb6dd41ce194c/src/core.ts#L3 but looks like is not used anywhere?

Oh yeah, you're right. I think we can remove chain and verbose members? is verbose really useful (only referenced in swap file)

yes we can remove it if not used


Adding missing $inject on cordovaOauthUtility

This missing $inject was generating a broken minified version.
Tested with facebook, Instagram and github.
Now I think we will have an stable version to staging.

Think this fixes the problem I was getting?
I'm hoping to test a little bit today.

For sure it will i could simulate the error and that was the problem. Let's
make a staging version with this. And see if the testers approve, if they
approve we can launch this version because it will fix the problem with the
inappbrowser some of the users are having now.
Em 17/11/2015 10:40, "Nic Raboy"<EMAIL_ADDRESS>escreveu:

Think this fixes the problem I was getting?
I'm hoping to test a little bit today.
—
Reply to this email directly or view it on GitHub
https://github.com/nraboy/ng-cordova-oauth/pull/163#issuecomment-157372818
.

Not sure if this is related, but Twitter no longer works:
I/chromium( 2064): [INFO:CONSOLE(28)] """", source: file:///android_asset/www/js/app.js (28)

If that is an error, it is not very helpful.  I tested with Imgur and Facebook and both work fine.  My assumption is that Oauth 1.0 and Oauth explicit grants may be broken somewhere.

@nraboy I will take a look on that. Could be something when I was splitting the files, something missing, I will take a look. I will find the problem and fix. I will be very happy when we have an stable version. :+1:
Just one thing can you give a context what it is in line 28 of app.js ??? Could be the app.js file, this test you are making it's open source?

I was using this project to test:
https://github.com/nraboy/ng-cordova-oauth-example
I swapped out the current library files with the new ones from the development branch.

Ok, Nice... I will clone later and try to figure out what is the problem
with twitter.
2015-11-19 13:00 GMT-03:00 Nic Raboy<EMAIL_ADDRESS>
I was using this project to test:
https://github.com/nraboy/ng-cordova-oauth-example
I swapped out the current library files with the new ones from the
development branch.
—
Reply to this email directly or view it on GitHub
https://github.com/nraboy/ng-cordova-oauth/pull/163#issuecomment-158100459
.

--
Atenciosamente
Matheus Cruz Rocha

Desenvolvedor WEB e Mobile

(71) 9198-3176

I am having some problems to test, the project always say that cordova/plugins not found are you having this problem? I google it but didn't found anything relevant about it

Did you add the appropriate platform and plugins when you cloned the repo?

Sorry, my bad, forgot to add the plugin. 404 on twitter, I will test with the older version of ng-cordova-oauth

@nraboy Same problem with the old version, I think the url doesn't exist anymore or is down. Still in docs so I think it's down.

I think yesterday was some problems with twitter api. Now I am receiving 401 in both, new and old versions of ng-cordova-oauth

I used the master branch of ng-cordova-oauth and added the ng-cordova-oauth.min.js into the example project.  I added the Android platform and all necessary plugins.
Twitter worked fine when I tested without a 401 error.  I received my access token fine.
Are you sure you created a Twitter application correctly via their dashboard?

@nraboy I tested the older and the new version of the ng-cordova-oauth and the login was fine. Without problems.

Are you still having problems with twitter @nraboy ?

Haven't had a chance yet.  My free time is limited to only a few days per month.  I will give it a shot tonight.

Weird, it works now.  Must have been an issue with Twitter.
Let me create a staging branch for testing.

I created a staging branch.  Please share it with everyone you know and have them report testing results here:
https://github.com/nraboy/ng-cordova-oauth/issues/167
Thanks Matheus!


Issue with labels recognition

Hi,
There seems to be an issue when training a classifier on an input txt file. The labels are not recognized even though they have the right prefix in front of them.
I tried with both the default  '_label_' prefix and custom prefix and both did not work.
Good luck in your work, it seems promising ! :)

@lcorbel can you give us the example your data? Will try to reproduce it. Especially on lines that doesn't recognised as label


global beforeEach/afterEach hooks not running in --watch mode

This is using 1.0.0-beta1
We have some beforeEach()/afterEach() hooks set up at the global level that run before every test. When running without the --watch option, and the first time the whole suite runs with --watch, these are being executed appropriately.
However, in --watch mode, after a file change, these global hooks are NOT being run, and the tests that rely on them are failing

Yep, that's correct and works as expected as only changed files or files that were affected by a change are retested.
Every test file should run in isolation, everything else is a bad pattern in my opinion. Normally I never develop against the whole test suite and just use a single test file or directory as entry to have faster compile and test times.
As a workaround you can use --include option and pass your file to it. Then it will be run with every file change like described in http://zinserjan.github.io/mocha-webpack/docs/installation/cli-usage.html#-require-include


Allow Abjuration Trait to be Removed from Magic Armor

Since the CRB shows Magic Armor as having the Abjuration trait, it is applied whenever a +1 potency rune is added to armor.
Specific Magic Armors may not have the Abjuration trait, and may have a different school trait added. When creating a Magic Armor item, there should be an option to say this is a Specific Magic Armor, which removes the Abjuration trait.
Alternatively, remove the school trait from the list of traits automatically added to Magic Armor items.

Paizo only lists the traits that are specific to that armor, not the ones that come from the runes. If armor runes pass their traits onto the armor itself then the current behavior is correct for the same reason that Paizo doesn't include traits from sub-ordinate actions.

Closing due to staleness and ensuing removal of trait


Use the validate_legacy system (as puppet4 now supports types)

Puppet4 now has proper typing support. Instead of moving the entire module to puppet4 (which would break Puppet3 users), let's get started with the legacy validation now supported by stdlib (which will remove warning messages)

Hi @ColinHebert, thanks for this PR. Can you clarify if this is going to cause problems for people with older puppet versions? We support a lot of customers on different versions of Puppet and from the looks of it, the validate_legacy was added semi-recently so I'm worried that this change will potentially break people with older versions of stdlib.

Looking a bit more into it, it is a breaking change for puppet < 4.
I'd recommend to set policies on which versions of Puppet & Stdlib are supported by this plugin.
At the moment Puppetlabs supports those versions of puppet (through Puppet enterprise):
|Puppet Enterprise versions|	Start mainstream support|	Start limited support|	End of life|

PE 2016.5
December 13, 2016
TBD
TBD

PE 2016.4 (LTS)
October 20, 2016
October 2018
TBD

PE 2016.2
June 21, 2016
October 20, 2016
April 30, 2017

PE 2016.1
April 7, 2016
June 21, 2016
April 30, 2017

PE 2015.3
December 8, 2015
April 7, 2016
April 30, 2017

PE 2015.2
July 28, 2015
December 8, 2015
April 30, 2017

PE 3.8
April 28, 2015
December 31, 2016
December 31, 2016

Source: https://puppet.com/misc/puppet-enterprise-lifecycle
The mapping between the PE version supported and the actual version of puppet is available in https://docs.puppet.com/pe/latest/overview_version_table.html
So Puppet 3 support as already been completely dropped three months ago (with PE 3.8) and the support for Puppet 4.7 and below is going to be dropped completely at the end of next month.


only refresh dashbord when the console and the zk are in the same IDC

for when the console and the zk are in the different IDC, the refresh will be too slow,so no refreshing should be done when the console and the zk are in the different IDC.

tes


Potential race condition using storage::Client::WriteObject

Answering these questions before submitting your bug report will help us give
you a quicker answer.  Thank you!
If one or more of these questions are not applicable, feel free to remove them.
Does this issue affect the google-cloud-cpp project?
If the problem is with the service exposed by the google-cloud-cpp APIs
instead of the client libraries you may consider opening a support request
instead.  The google-cloud-cpp developers cannot help you troubleshoot
problems with the service itself.
What component of google-cloud-cpp is this related to?
Remove the ones that do not apply.

Cloud Storage.

What version of google-cloud-cpp are you using?
v0.14.0
Please include the output from git rev-parse HEAD if you are compiling from
source, or the version number from the applicable */version.h file.
What compiler and version are you using?
Please include the output of g++ -v or the equivalent command-line flag.
What operating system and version are you using?
NixOS, https://github.com/NixOS/nixpkgs/pull/70485/commits/5e225b7fd9f6274cc52ebbd3296b41510bd42122
If you are using a Linux distribution include the name and version of the
distribution too.
What were you trying to do?
If possible, produce a recipe for reproducing the problem.
https://github.com/NixOS/nix/pull/3021
nix copy --to gs://mybucket /nix/store/...
What did you expect to see?
The passed nix outputs uploaded successfully.
What was the behavior you expected from the library?
To upload the outputs
What did you see instead?
nghttp2_session.c:2161: session_prep_frame: Assertion `session->last_sent_stream_id < frame->hd.stream_id' failed.

What was the behavior you actually observed?
Anything else you would like us to know?
Include here information about your environment that is not captured above, or
any other information you think might be relevant.
This seems to be a snowflake.
I couldn't reproduce it reliably, and it succeeded after running a second time. Stacktrace attached.
Thread 9 (Thread 0x7f9a47024f80 (LWP 25365)):
#0  0x00007f9a4814136f in write () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#1  0x00007f9a47d34215 in sock_write () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libcrypto.so.1.1
#2  0x00007f9a47d2d1ca in bwrite_conv () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libcrypto.so.1.1
#3  0x00007f9a47d2c1e0 in BIO_write () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libcrypto.so.1.1
#4  0x00007f9a4720a536 in ssl3_write_pending () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#5  0x00007f9a4720b525 in do_ssl3_write () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#6  0x00007f9a4720b8c9 in ssl3_write_bytes () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#7  0x00007f9a47220c7c in ssl_write_internal () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#8  0x00007f9a47220eb3 in SSL_write () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#9  0x00007f9a47b1f2e3 in ossl_send () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#10 0x00007f9a47b0b14e in send_callback () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#11 0x00007f9a472cdb39 in nghttp2_session_send () from /nix/store/7br88bq8yh7wq16wp746fhmqzf0lwwkm-nghttp2-1.39.2-lib/lib/libnghttp2.so.14
#12 0x00007f9a47b0bba3 in http2_send () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#13 0x00007f9a47ad3d93 in Curl_write () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#14 0x00007f9a47acfa4e in Curl_add_buffer_send () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#15 0x00007f9a47ad203d in Curl_http () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#16 0x00007f9a47aefdbe in multi_runsingle () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#17 0x00007f9a47af09d3 in curl_multi_perform () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#18 0x00007f9a4751221c in google::cloud::storage::v1::internal::CurlDownloadRequest::PerformWork (this=this@entry=0x133f6d0) at /build/source/google/cloud/storage/internal/curl_download_request.cc:296
#19 0x00007f9a47513660 in google::cloud::storage::v1::internal::CurlDownloadRequest::Wait<google::cloud::storage::v1::internal::CurlDownloadRequest::Read(char*, std::size_t)::<lambda()> >(google::cloud::storage::v1::internal::CurlDownloadRequest::<lambda()>) (this=this@entry=0x133f6d0, <EMAIL_ADDRESS>at /build/source/google/cloud/storage/internal/curl_download_request.cc:57
#20 0x00007f9a47513ba1 in google::cloud::storage::v1::internal::CurlDownloadRequest::Read (this=0x133f6d0, buf=<optimized out>, n=<optimized out>) at /build/source/google/cloud/storage/internal/curl_download_request.cc:146
#21 0x00007f9a475d6206 in google::cloud::storage::v1::internal::RetryObjectReadSource::Read (this=0x10f1660, buf=<optimized out>, n=<optimized out>) at /build/source/google/cloud/storage/internal/retry_object_read_source.cc:70
#22 0x00007f9a475a017e in google::cloud::storage::v1::internal::ObjectReadStreambuf::Peek (this=this@entry=0x132ee60) at /build/source/google/cloud/storage/internal/object_streambuf.cc:62
#23 0x00007f9a475a0573 in google::cloud::storage::v1::internal::ObjectReadStreambuf::underflow (this=0x132ee60) at /build/source/google/cloud/storage/internal/object_streambuf.cc:91
#24 0x00007f9a485ffcf6 in std::istream::peek() () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#25 0x00007f9a474c1261 in google::cloud::storage::v1::Client::ReadObjectImpl (this=<optimized out>, request=...) at /build/source/google/cloud/storage/client.cc:62
#26 0x00007f9a4889b095 in nix::GCSBinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Sink&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#27 0x00007f9a487f3a8d in nix::BinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#28 0x00007f9a487f3b84 in nix::BinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<std::shared_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#29 0x00007f9a487f742e in nix::BinaryCacheStore::queryPathInfoUncached(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<std::shared_ptr<nix::ValidPathInfo> >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#30 0x00007f9a48917fe4 in nix::Store::queryPathInfo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<nix::ref<nix::ValidPathInfo> >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#31 0x00007f9a489198d2 in std::_Function_handler<void (), std::_Bind<nix::Store::queryValidPaths(std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nix::SubstituteFlag)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1} (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)> >::_M_invoke(std::_Any_data const&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#32 0x0000000000479cee in std::function<void ()>::operator()() const ()
#33 0x00007f9a48709c76 in nix::ThreadPool::doWork(bool) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#34 0x00007f9a4870a87a in nix::ThreadPool::process() () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#35 0x00007f9a4891436f in nix::Store::queryValidPaths(std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nix::SubstituteFlag) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#36 0x00007f9a4891c255 in nix::copyPaths(nix::ref<nix::Store>, nix::ref<nix::Store>, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nix::RepairFlag, nix::CheckSigsFlag, nix::SubstituteFlag) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#37 0x00000000004b7912 in CmdCopy::run(nix::ref<nix::Store>, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) ()
#38 0x00000000004b4f5d in nix::StorePathsCommand::run(nix::ref<nix::Store>) ()
#39 0x00000000004b2881 in nix::StoreCommand::run() ()
#40 0x00000000004ce597 in nix::mainWrapped(int, char**) ()
#41 0x00000000004ce7d8 in std::_Function_handler<void (), main::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#42 0x0000000000479cee in std::function<void ()>::operator()() const ()
#43 0x00007f9a489c2194 in nix::handleExceptions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void ()>) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixmain.so
#44 0x00000000004cde85 in main ()

Thread 8 (Thread 0x7f9a2ce8a700 (LWP 25371)):
#0  0x00007f9a4813e256 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#1  0x00000000004da631 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<nix::ProgressBar::ProgressBar(bool, bool)::{lambda()#1}> > >::_M_run() ()
#2  0x00007f9a485c1d7f in ?? () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#3  0x00007f9a48137ef7 in start_thread () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#4  0x00007f9a4806d22f in clone () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6

Thread 7 (Thread 0x7f9a4569b700 (LWP 25370)):
#0  0x00007f9a4813dee2 in pthread_cond_wait@@GLIBC_2.3.2 () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#1  0x00007f9a489ec187 in GC_wait_marker () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#2  0x00007f9a489ec64a in GC_help_marker () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#3  0x00007f9a489ec72f in GC_mark_thread () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#4  0x00007f9a48137ef7 in start_thread () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#5  0x00007f9a4806d22f in clone () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6

Thread 6 (Thread 0x7f9a45e9c700 (LWP 25369)):
#0  0x00007f9a4813dee2 in pthread_cond_wait@@GLIBC_2.3.2 () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#1  0x00007f9a489ec187 in GC_wait_marker () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#2  0x00007f9a489ec64a in GC_help_marker () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#3  0x00007f9a489ec72f in GC_mark_thread () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#4  0x00007f9a48137ef7 in start_thread () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#5  0x00007f9a4806d22f in clone () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6

Thread 5 (Thread 0x7f9a277fe700 (LWP 26198)):
#0  0x00007f9a48063501 in poll () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6
#1  0x00007f9a47af4399 in Curl_poll () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#2  0x00007f9a47aeda8f in Curl_multi_wait.part.9 () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#3  0x00007f9a475120b3 in google::cloud::storage::v1::internal::CurlDownloadRequest::WaitForHandles (this=this@entry=0x7f9a18004460, repeats=@0x7f9a277fc4dc: 0) at /build/source/google/cloud/storage/internal/curl_download_request.cc:365
#4  0x00007f9a475136b7 in google::cloud::storage::v1::internal::CurlDownloadRequest::Wait<google::cloud::storage::v1::internal::CurlDownloadRequest::Read(char*, std::size_t)::<lambda()> >(google::cloud::storage::v1::internal::CurlDownloadRequest::<lambda()>) (this=this@entry=0x7f9a18004460, <EMAIL_ADDRESS>at /build/source/google/cloud/storage/internal/curl_download_request.cc:68
#5  0x00007f9a47513ba1 in google::cloud::storage::v1::internal::CurlDownloadRequest::Read (this=0x7f9a18004460, buf=<optimized out>, n=<optimized out>) at /build/source/google/cloud/storage/internal/curl_download_request.cc:146
#6  0x00007f9a475d6206 in google::cloud::storage::v1::internal::RetryObjectReadSource::Read (this=0x7f9a180055d0, buf=<optimized out>, n=<optimized out>) at /build/source/google/cloud/storage/internal/retry_object_read_source.cc:70
#7  0x00007f9a475a017e in google::cloud::storage::v1::internal::ObjectReadStreambuf::Peek (this=this@entry=0x7f9a180baa60) at /build/source/google/cloud/storage/internal/object_streambuf.cc:62
#8  0x00007f9a475a0573 in google::cloud::storage::v1::internal::ObjectReadStreambuf::underflow (this=0x7f9a180baa60) at /build/source/google/cloud/storage/internal/object_streambuf.cc:91
#9  0x00007f9a485ffcf6 in std::istream::peek() () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#10 0x00007f9a474c1261 in google::cloud::storage::v1::Client::ReadObjectImpl (this=<optimized out>, request=...) at /build/source/google/cloud/storage/client.cc:62
#11 0x00007f9a4889b095 in nix::GCSBinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Sink&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#12 0x00007f9a487f3a8d in nix::BinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#13 0x00007f9a487f3b84 in nix::BinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<std::shared_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#14 0x00007f9a487f742e in nix::BinaryCacheStore::queryPathInfoUncached(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<std::shared_ptr<nix::ValidPathInfo> >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#15 0x00007f9a48917fe4 in nix::Store::queryPathInfo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<nix::ref<nix::ValidPathInfo> >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#16 0x00007f9a489198d2 in std::_Function_handler<void (), std::_Bind<nix::Store::queryValidPaths(std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nix::SubstituteFlag)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1} (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)> >::_M_invoke(std::_Any_data const&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#17 0x0000000000479cee in std::function<void ()>::operator()() const ()
#18 0x00007f9a48709c76 in nix::ThreadPool::doWork(bool) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#19 0x00007f9a4870afd6 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (nix::ThreadPool::*)(bool), nix::ThreadPool*, bool> > >::_M_run() () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#20 0x00007f9a485c1d7f in ?? () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#21 0x00007f9a48137ef7 in start_thread () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#22 0x00007f9a4806d22f in clone () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6

Thread 4 (Thread 0x7f9a4669d700 (LWP 25368)):
#0  0x00007f9a4813dee2 in pthread_cond_wait@@GLIBC_2.3.2 () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#1  0x00007f9a489ec187 in GC_wait_marker () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#2  0x00007f9a489ec64a in GC_help_marker () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#3  0x00007f9a489ec72f in GC_mark_thread () from /nix/store/qxjz5annsw5pbsr7w2y2l2wcjifh3ikm-boehm-gc-8.0.4/lib/libgc.so.1
#4  0x00007f9a48137ef7 in start_thread () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#5  0x00007f9a4806d22f in clone () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6

Thread 3 (Thread 0x7f9a4701e700 (LWP 25367)):
#0  0x00007f9a47fb08dc in sigtimedwait () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6
#1  0x00007f9a48142434 in sigwait () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#2  0x00007f9a48710114 in nix::signalHandlerThread(__sigset_t) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#3  0x00007f9a48716a43 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(__sigset_t), __sigset_t> > >::_M_run() () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#4  0x00007f9a485c1d7f in ?? () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#5  0x00007f9a48137ef7 in start_thread () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#6  0x00007f9a4806d22f in clone () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6

Thread 2 (Thread 0x7f9a27fff700 (LWP 26197)):
#0  0x00007f9a4814136f in write () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#1  0x00007f9a47d34215 in sock_write () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libcrypto.so.1.1
#2  0x00007f9a47d2d1ca in bwrite_conv () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libcrypto.so.1.1
#3  0x00007f9a47d2c1e0 in BIO_write () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libcrypto.so.1.1
#4  0x00007f9a4720a536 in ssl3_write_pending () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#5  0x00007f9a4720b525 in do_ssl3_write () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#6  0x00007f9a4720b8c9 in ssl3_write_bytes () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#7  0x00007f9a47220c7c in ssl_write_internal () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#8  0x00007f9a47220eb3 in SSL_write () from /nix/store/p9vc85c2bhsd3pyny65z2c8a6qv0c1bz-openssl-1.1.1c/lib/libssl.so.1.1
#9  0x00007f9a47b1f2e3 in ossl_send () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#10 0x00007f9a47b0b14e in send_callback () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#11 0x00007f9a472cdb39 in nghttp2_session_send () from /nix/store/7br88bq8yh7wq16wp746fhmqzf0lwwkm-nghttp2-1.39.2-lib/lib/libnghttp2.so.14
#12 0x00007f9a47b0bba3 in http2_send () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#13 0x00007f9a47ad3d93 in Curl_write () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#14 0x00007f9a47acfa4e in Curl_add_buffer_send () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#15 0x00007f9a47ad203d in Curl_http () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#16 0x00007f9a47aefdbe in multi_runsingle () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#17 0x00007f9a47af09d3 in curl_multi_perform () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#18 0x00007f9a4751221c in google::cloud::storage::v1::internal::CurlDownloadRequest::PerformWork (this=this@entry=0x7f9a20006440) at /build/source/google/cloud/storage/internal/curl_download_request.cc:296
#19 0x00007f9a47513660 in google::cloud::storage::v1::internal::CurlDownloadRequest::Wait<google::cloud::storage::v1::internal::CurlDownloadRequest::Read(char*, std::size_t)::<lambda()> >(google::cloud::storage::v1::internal::CurlDownloadRequest::<lambda()>) (this=this@entry=0x7f9a20006440, <EMAIL_ADDRESS>at /build/source/google/cloud/storage/internal/curl_download_request.cc:57
#20 0x00007f9a47513ba1 in google::cloud::storage::v1::internal::CurlDownloadRequest::Read (this=0x7f9a20006440, buf=<optimized out>, n=<optimized out>) at /build/source/google/cloud/storage/internal/curl_download_request.cc:146
#21 0x00007f9a475d6206 in google::cloud::storage::v1::internal::RetryObjectReadSource::Read (this=0x7f9a20007530, buf=<optimized out>, n=<optimized out>) at /build/source/google/cloud/storage/internal/retry_object_read_source.cc:70
#22 0x00007f9a475a017e in google::cloud::storage::v1::internal::ObjectReadStreambuf::Peek (this=this@entry=0x7f9a20003180) at /build/source/google/cloud/storage/internal/object_streambuf.cc:62
#23 0x00007f9a475a0573 in google::cloud::storage::v1::internal::ObjectReadStreambuf::underflow (this=0x7f9a20003180) at /build/source/google/cloud/storage/internal/object_streambuf.cc:91
#24 0x00007f9a485ffcf6 in std::istream::peek() () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#25 0x00007f9a474c1261 in google::cloud::storage::v1::Client::ReadObjectImpl (this=<optimized out>, request=...) at /build/source/google/cloud/storage/client.cc:62
#26 0x00007f9a4889b095 in nix::GCSBinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Sink&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#27 0x00007f9a487f3a8d in nix::BinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#28 0x00007f9a487f3b84 in nix::BinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<std::shared_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#29 0x00007f9a487f742e in nix::BinaryCacheStore::queryPathInfoUncached(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<std::shared_ptr<nix::ValidPathInfo> >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#30 0x00007f9a48917fe4 in nix::Store::queryPathInfo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<nix::ref<nix::ValidPathInfo> >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#31 0x00007f9a489198d2 in std::_Function_handler<void (), std::_Bind<nix::Store::queryValidPaths(std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nix::SubstituteFlag)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1} (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)> >::_M_invoke(std::_Any_data const&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#32 0x0000000000479cee in std::function<void ()>::operator()() const ()
#33 0x00007f9a48709c76 in nix::ThreadPool::doWork(bool) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#34 0x00007f9a4870afd6 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (nix::ThreadPool::*)(bool), nix::ThreadPool*, bool> > >::_M_run() () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#35 0x00007f9a485c1d7f in ?? () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#36 0x00007f9a48137ef7 in start_thread () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#37 0x00007f9a4806d22f in clone () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6

Thread 1 (Thread 0x7f9a26ffd700 (LWP 26199)):
#0  0x00007f9a47fafbe0 in raise () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6
#1  0x00007f9a47fb0dc1 in abort () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6
#2  0x00007f9a47fa86e7 in __assert_fail_base () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6
#3  0x00007f9a47fa8792 in __assert_fail () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6
#4  0x00007f9a472cd997 in nghttp2_session_mem_send_internal () from /nix/store/7br88bq8yh7wq16wp746fhmqzf0lwwkm-nghttp2-1.39.2-lib/lib/libnghttp2.so.14
#5  0x00007f9a472cdb59 in nghttp2_session_send () from /nix/store/7br88bq8yh7wq16wp746fhmqzf0lwwkm-nghttp2-1.39.2-lib/lib/libnghttp2.so.14
#6  0x00007f9a47b0bba3 in http2_send () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#7  0x00007f9a47ad3d93 in Curl_write () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#8  0x00007f9a47acfa4e in Curl_add_buffer_send () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#9  0x00007f9a47ad203d in Curl_http () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#10 0x00007f9a47aefdbe in multi_runsingle () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#11 0x00007f9a47af09d3 in curl_multi_perform () from /nix/store/ab9fgc6v9rkxd9h4ms99bx330b3lidr1-curl-7.65.3/lib/libcurl.so.4
#12 0x00007f9a4751221c in google::cloud::storage::v1::internal::CurlDownloadRequest::PerformWork (this=this@entry=0x7f9a1c006fd0) at /build/source/google/cloud/storage/internal/curl_download_request.cc:296
#13 0x00007f9a47513660 in google::cloud::storage::v1::internal::CurlDownloadRequest::Wait<google::cloud::storage::v1::internal::CurlDownloadRequest::Read(char*, std::size_t)::<lambda()> >(google::cloud::storage::v1::internal::CurlDownloadRequest::<lambda()>) (this=this@entry=0x7f9a1c006fd0, <EMAIL_ADDRESS>at /build/source/google/cloud/storage/internal/curl_download_request.cc:57
#14 0x00007f9a47513ba1 in google::cloud::storage::v1::internal::CurlDownloadRequest::Read (this=0x7f9a1c006fd0, buf=<optimized out>, n=<optimized out>) at /build/source/google/cloud/storage/internal/curl_download_request.cc:146
#15 0x00007f9a475d6206 in google::cloud::storage::v1::internal::RetryObjectReadSource::Read (this=0x7f9a1c004560, buf=<optimized out>, n=<optimized out>) at /build/source/google/cloud/storage/internal/retry_object_read_source.cc:70
#16 0x00007f9a475a017e in google::cloud::storage::v1::internal::ObjectReadStreambuf::Peek (this=this@entry=0x7f9a1c00d030) at /build/source/google/cloud/storage/internal/object_streambuf.cc:62
#17 0x00007f9a475a0573 in google::cloud::storage::v1::internal::ObjectReadStreambuf::underflow (this=0x7f9a1c00d030) at /build/source/google/cloud/storage/internal/object_streambuf.cc:91
#18 0x00007f9a485ffcf6 in std::istream::peek() () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#19 0x00007f9a474c1261 in google::cloud::storage::v1::Client::ReadObjectImpl (this=<optimized out>, request=...) at /build/source/google/cloud/storage/client.cc:62
#20 0x00007f9a4889b095 in nix::GCSBinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Sink&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#21 0x00007f9a487f3a8d in nix::BinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#22 0x00007f9a487f3b84 in nix::BinaryCacheStore::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<std::shared_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#23 0x00007f9a487f742e in nix::BinaryCacheStore::queryPathInfoUncached(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<std::shared_ptr<nix::ValidPathInfo> >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#24 0x00007f9a48917fe4 in nix::Store::queryPathInfo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nix::Callback<nix::ref<nix::ValidPathInfo> >) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#25 0x00007f9a489198d2 in std::_Function_handler<void (), std::_Bind<nix::Store::queryValidPaths(std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, nix::SubstituteFlag)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1} (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)> >::_M_invoke(std::_Any_data const&) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so
#26 0x0000000000479cee in std::function<void ()>::operator()() const ()
#27 0x00007f9a48709c76 in nix::ThreadPool::doWork(bool) () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#28 0x00007f9a4870afd6 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (nix::ThreadPool::*)(bool), nix::ThreadPool*, bool> > >::_M_run() () from /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixutil.so
#29 0x00007f9a485c1d7f in ?? () from /nix/store/jxny7lfjvxwxli237wp3fl09wll0jlfh-gcc-7.4.0-lib/lib/libstdc++.so.6
#30 0x00007f9a48137ef7 in start_thread () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libpthread.so.0
#31 0x00007f9a4806d22f in clone () from /nix/store/6yaj6n8l925xxfbcd65gzqx3dz7idrnn-glibc-2.27/lib/libc.so.6

Hrm, now I also ran into a double free. Do we have some concurrency bugs in the library?

Thanks again for filing detailed bug reports.  Can you tell us what version of libcurl is used by NixOS?  Or better yet, is:
docker run --rm -it nixos/nix:latest /bin/bash

the right way to start a shell with all the NixOS packages?  Should we use something other than latest?

The GCS support isn't yet merged.
However, I can provide a default.nix in some hours, which should catapult you into an environment containing the right version of nix, and gdb :-)

I was just planning to compile google-cloud-cpp from source with the nix dependencies and then try to repro in that environment.

@coryan I pushed a repro at https://github.com/flokli/nix-gcs-repro, with build instructions.
From inside the nix-shell environment, you should be able to provoke the crash by calling nix copy --to gs://mybucket /nix/store/….

Ah, and from a readelf -d /nix/store/hhksa4al7lfw8hsqaib7bwsmqsg8nv9r-nix-2.3pre6895_84de821/lib/libnixstore.so in there, that's curl 7.65.3.

@coryan did you manage to reproduce using the repo provided, or by building locally? Any way I can help with debugging?

@flokli I have not been able to wrong on reproducing this in your environment. I am trying to write a test with larger/longer uploads and more opportunities for any race condition to prop up.
One thing you could do to help is go through the release notes for curl (and nghttp2) and see if anything that looks like your problem has been found? I ask because we use curl in a fairly vanilla way: we create a CURL* handle for each upload, and (as long as you using the ObjectWriteStream from a single thread) use that handle from a single thread.

For what it is worth, I have been running the code in this branch:
https://github.com/coryan/google-cloud-cpp/tree/master/google/cloud/storage/tests/parallel_upload_regression
for hours without any crashes (the program I linked runs 2 * NCORES threads all uploading objects between 1GiB and 2GiB) .  It uses the same version of libcurl (7.65.3), I suspect the problems are either in nghttp2, or I need more threads. Can you tell me what nghttp2 you use?  Sorry I have not had the time to learn how to work with NixOS just yet.

All good! Thanks for taking a look into this, very much appreciated!
That specific repro runs with nghttp2-1.39.2, which also should be the latest version available.
That specific flavour of nghttp2 (without hpack/jansson, asiolib/boost, getassets/libxml2, jemalloc), you can obtain the build log via nix log /nix/store/ssf3lbswr2lmgbn4i4xlar44l36k70c0-nghttp2-1.39.2.

@coryan so you're not able to reproduce in the test suite, but are able to in the provided repro?
I should add the bucket is in us-west2 (with REGIONAL storage class), and the GCE instances (custom-10-30720 machine type) connecting to it are in us-west2-a.

Can you confirm that I did the right things to get your repro setup
> docker run --rm -it nixos/nix /bin/sh

# nix-channel --update
# nix-env -i git
# git clone https://github.com/flokli/nix-gcs-repro.git
# cd nix-gcs-repro/
# nix-shell .
# nix copy --to gs://coryan-test-nix /nix/store/*
querying source.drv on gs://coryan-test-nixSegmentation fault (core dumped)

Do those look reasonable?

yes, this looks right :-)

Hey, nothing obvious comes to mind when looking at the stack traces or valgrind.  The client library has a relatively simple strategy for locking: a download (or upload) creates a CURL* handle that is used by the upload or download exclusively until it is done. As your code performs the download (or upload) in a single thread it is hard to see how we could violate the restrictions for CURL* handles.
There is a CURLSH* handle created for each client, but that is protected by locking callbacks, and they are setup correctly (I verified that with a breakpoint).
I did notice that your application creates two CurlClient objects, or at least the constructor is called twice.  Can you tell me something about how this avoids deleting a Client that is in used by another thread:
https://github.com/NixOS/nix/pull/3021/files#diff-b1e603a1ea8f9c5a0d38f7caf7079cdaR46

ping @andir

Any updates here?  Is this still an issue?  Thanks.

No sorry.  AFAICT this is something in the particular version of libcurl used by that build, I was unable to repro in any other platform. I am changing the priority for now.

@flokli and @andir we recently made changes that may fix the issues you reported, see #3860 for more details.

Sorry for not getting back recently - the underlying Nix PR using google-cloud-cpp has gotten stale.
I propose closing this for now. If this gets picked up, and is still an issue, we can always open a new issue, but there's few reasons to keep an issue open which might already fixed.


Argument --once is not working when invoked from config

Agent Version and Platform
2.551.0, Windows Server 2016
Azure DevOps Type and Version
dev.azure.com
What's not working?
--once parameter doesn't work if invoked with ./config and runAsAutoLogon.
It doesn't seem to work at all for configuration.
If it should be only used with ./run command, please update your documentation which clearly indicate it can be used as part of unattended config:
https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops#unattended-config

Hi this is also tracked here:
https://github.com/MicrosoftDocs/vsts-docs/issues/5487