Way to customize individual markers added to cluster manager?

Is there a way to change icon and title of individual markers when they are not clustered? For Android, I know I can extend DefaultClusterRenderer and override onBeforeClusterItemRendered method, but I cannot find a way to do this for iOS

What you can do is extend GMUDefaultClusterRenderer and override this method
- (GMSMarker *)markerWithPosition:(CLLocationCoordinate2D)position
                             from:(CLLocationCoordinate2D)from
                         userData:(id)userData
                      clusterIcon:(UIImage *)clusterIcon
                         animated:(BOOL)animated

This is where the marker is actually created. I've included some sample code here. Please note the new code is between the "// new code" markers. Let us know how you go. We will plan to make a better API for this use case in a later release.
  CLLocationCoordinate2D initialPosition = animated ? from : position;
  GMSMarker *marker = [GMSMarker markerWithPosition:initialPosition];
  marker.userData = userData;
  if (clusterIcon != nil) {
    marker.icon = clusterIcon;
    marker.groundAnchor = CGPointMake(0.5, 0.5);
  }
 // new code starts here.
  else {
   // this is new code for customizing individual markers
    marker.icon =  [self getCustomIconForItem:userData];  // stub method
    marker.title = [self getCustomTitleItem:userData];  // stub method
  }
// new code ends here.

  marker.map = _mapView;

  if (animated) {
    [CATransaction begin];
    [CATransaction setAnimationDuration:kGMUAnimationDuration];
    marker.layer.latitude = position.latitude;
    marker.layer.longitude = position.longitude;
    [CATransaction commit];
  }

@mountainvat This works for changing all of individual markers to the same icon and title, but I do not know how to use this code to change only some of individual markers. I would like to set the icon and the title of markers depending on a variable stored in my custom GMUClusterItem. Is there a way to do this too?

one way you can do replace this code:
    marker.icon =  [self getCustomIconForItem:userData];  // stub method
    marker.title = [self getCustomTitleItem:userData];  // stub method

with
    marker.icon =  [self getCustomIconForItem:userData] ? :  marker.icon;  // stub method
    marker.title = [self getCustomTitleItem:userData] ? : marker.title;  // stub method

and in the getCustomXXX method, you'd return nil if the item should not be customized.
Hope it helps.

@mountainvat I am sorry, but I'm not familiar with Objective C and don't know how I should replace [self getCustomIconForItem:userData] and [self getCustomTitleItem:userData].
If I want to title my marker with POIItem's name (from https://developers.google.com/maps/documentation/ios-sdk/utility/marker-clustering), for example, should I call userData's name variable?
`
/// Point of Interest Item which implements the GMUClusterItem protocol.
class POIItem: NSObject, GMUClusterItem {
    var position: CLLocationCoordinate2D
    var name: String!

    init(position: CLLocationCoordinate2D, name: String) {
        self.position = position
        self.name = name
      }
    }`

You can safely cast userData to your cluster item object. So I'd imagine something like this:
- (NSString *)getCustomTitleItem:(id)userData {
  POIItem *item = userData;
  return item.name;
}

@mountainvat I tried to put your code in GMSDefaultClusterRenderer.m, but it says use of undeclared identifier. Should I move POIItem class to Clustering folder that has all Google-Maps-IOS-Utils classes?

I would not put the code inside GMSDefaultClusterRenderer.m. I'd rather extend it in your own application's classes. Since the custom renderer lives in your app's target it should have access yo your GMUClusterItem classes. So you could do something like this:
@interface MyClusterRenderer : GMSDefaultClusterRenderer
@end

@implementation MyClusterRenderer

- (NSString *)getCustomTitleItem:(id)userData {
  YourOwnGMUClusterItemClass *item = userData;
  return item.name;
}

@end

@mountainvat That makes sense. Apparently, I did not read your very first answer that said to extend GMSDefaultClusterRenderer. However, it fails to build. ("Command failed due to signal: Segmentation fault: 11"
This is what I have for my custom renderer:
#import <Foundation/Foundation.h>
#import "CustomRenderer.h"
#import "MyProjectName-swift.h"

// Animation duration for marker splitting/merging effects.
static const double kGMUAnimationDuration = 0.5;  // seconds.

@implementation CustomRenderer
// Map view to render clusters on.
__weak GMSMapView *_mapView;

- (NSString *)getCustomTitleItem:(id)userData {
    MyOwnClusterItemClass *item = userData;
    return item.title;
}

- (GMSMarker *)markerWithPosition:(CLLocationCoordinate2D)position
                             from:(CLLocationCoordinate2D)from
                         userData:(id)userData
                      clusterIcon:(UIImage *)clusterIcon
                         animated:(BOOL)animated {
    CLLocationCoordinate2D initialPosition = animated ? from : position;
    GMSMarker *marker = [GMSMarker markerWithPosition:initialPosition];
    marker.userData = userData;
    if (clusterIcon != nil) {
        marker.icon = clusterIcon;
        marker.groundAnchor = CGPointMake(0.5, 0.5);
    } else {
        marker.title = [self getCustomTitleItem:userData] ? : marker.title;
    }
    marker.map = _mapView;

    if (animated) {
        [CATransaction begin];
        [CATransaction setAnimationDuration:kGMUAnimationDuration];
        marker.layer.latitude = position.latitude;
        marker.layer.longitude = position.longitude;
        [CATransaction commit];
    }
    return marker;
}

@end

Do you know what is causing this error?

I cannot reason why it would cause a Segmentation fault. Do you have a stacktrace?
Anyway I can see a problem with your code (maybe not related): the _mapView instance var is always nil. What you also need to do is override initWithMapView to capture the mapView into your private _mapView variable.
Add this method to your new derived class:

- (instancetype)initWithMapView:(GMSMapView *)mapView
           clusterIconGenerator:(id<GMUClusterIconGenerator>)iconGenerator {
  self = [super initWithMapView:mapView clusterIconGenerator:iconGenerator];
  if (self) {
    _mapView = mapView;
  }
}

@s-p-a-r-k : Any luck with this? Can we close the ticket?

@mountainvat Sorry, I haven't had a chance to try it. But you can close it. I will tell you if it works. Thank you very much for your help!

@mountainvat I've tried to override GMUDefaultClusterRenderer, but I got this error.
Duplicate definition of category 'GoogleMaps' on interface 'GMSCoordinateBounds'

I must be numb-skulled, I'm trying to over-ride GMUDefaultClusterRenderer to achieve more dynamicity in my custom markers without having to edit the main file. I copied the code from the original file to a new class as previously aforementioned in the previous post. Although I'm now receiving mach-o linker errors after setting it up.  Deleting my custom class completely removes the errors.  I've managed to change the marker fine, but am struggling on how to do it "the right way".

FYI: we are working on making marker customization easier. Will have a release out end of this week or earlier next week. So stay tuned.

I have gone through the new  GMUClusterRendererDelegate
How can I use this in swift, I have to show markerimage(which would again be changing to different conditions) and have a label at the bottom of this marker. In Swift, I have used func renderer(renderer: GMUClusterRenderer, markerForObject object: AnyObject) -> GMSMarker
but it is not getting called before placing the marker so that I can change images on that?

If you update to version 1.1.x there should be new events for before and after the markers are added to map. Please see this post for more information: https://github.com/googlemaps/google-maps-ios-utils/blob/master/CustomMarkers.md

@mountainvat could you provide a swift example for this GMUDefaultClusterRenderer delegate?

Here's how I do it with a custom cluster item:
enum MarkerType: Int32 {
case RegularMarker, LandmarkMarker, GovernmentMarker

}
// Clustering markers customization
class CustomClusterItem: NSObject, GMUClusterItem {
var position: CLLocationCoordinate2D

var type: MarkerType

var icon: UIImage

init(position: CLLocationCoordinate2D, type: MarkerType, icon: UIImage)

{
    self.position = position

    self.type = type

    self.icon = icon

}

}
//MARK: - GMUClusterRendererDelegate

func renderer(_ renderer: GMUClusterRenderer, willRenderMarker marker:

GMSMarker) {
    if (marker.userData! is CustomClusterItem) {

        let customClusterItem = (marker.userData! as! CustomClusterItem)

        switch customClusterItem.type {

            case MarkerType.RegularMarker:

                marker.icon = appDelegate.markerImage

                break

            case MarkerType.LandmarkMarker:

                marker.icon = appDelegate.landmarkImage

                break

            case MarkerType.GovernmentMarker:

                marker.icon = appDelegate.govtImage

                break

        }

    }

}

On Tue, Nov 29, 2016 at 12:44 PM, Konstantinos N<EMAIL_ADDRESS>wrote:

@mountainvat https://github.com/mountainvat could you provide a swift
example for this GMUDefaultClusterRenderer delegate?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/googlemaps/google-maps-ios-utils/issues/21#issuecomment-263724686,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACqz9JqN4YYFXlDrieuFJX_r1Nw0ffslks5rDKrUgaJpZM4JWfJO
.

@jamesynotnot actually wanted to translate somehow this file
https://github.com/googlemaps/google-maps-ios-utils/blob/master/app/CustomMarkerViewController.m
Which has the functions to make this view happen.
Because im in the same position to have a json with names and images urls.

https://objectivec2swift.com/
On Tue, Nov 29, 2016 at 1:21 PM, Konstantinos N<EMAIL_ADDRESS>wrote:

@jamesynotnot https://github.com/jamesynotnot actually wanted to
translate somehow this file
https://github.com/googlemaps/google-maps-ios-utils/blob/master/app/
CustomMarkerViewController.m
Which has the functions to make this view happen.
Because im in the same position to have a json with names and images urls.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/googlemaps/google-maps-ios-utils/issues/21#issuecomment-263732486,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACqz9OR24N4g2k5BDbYYnbM5P91E6Q0qks5rDLNrgaJpZM4JWfJO
.

@jamesynotnot not the best way 😞

@jamesynotnot I cant get that render function to work. Could you post your whole controller by chance?

The controller is quite large and customized, so can't post it.  Your
controller should be like this:
class ViewController: UIViewController, GMUClusterManagerDelegate,
GMUClusterRendererDelegate, GMSMapViewDelegate {
}
Let me know what's failing and I can try to help
On Fri, Dec 2, 2016 at 4:51 AM, kayschmitt<EMAIL_ADDRESS>wrote:

@jamesynotnot https://github.com/jamesynotnot I cant get that render
function to work. Could you post your whole controller by chance?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/googlemaps/google-maps-ios-utils/issues/21#issuecomment-264471059,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACqz9MwEzVCdLVnN5778VWZobHrNYndEks5rEDB3gaJpZM4JWfJO
.

Hey guys, just came across this during my PR to support clustering with google maps in Titanium (here). A convenient way would be to just subclass it and use the protocol to create everything. Unfortunately, methods like markerWithPosition:from:userData:clusterIcon:animated: are not in the public interface, so they won't be suggested. That would be one of the improvements. Rather then that, things links handling the mapView reference should be solved using a reference to the super class, so we don't need to declare own initializers. Not sure if I can help here, but this sounds like a doable change! :-)

@mountainvat - But what about that :
/**

Raised when a marker (for a cluster or an item) is about to be added to the map.
Use the marker.userData property to check whether it is a cluster marker or an
item marker.
*/

(void)renderer:(id)renderer willRenderMarker:(GMSMarker *)marker;

in @protocol GMUClusterRendererDelegate?

@BeetLab you can use the event to customize your mark before it's added to the map. See https://github.com/googlemaps/google-maps-ios-utils/blob/master/CustomMarkers.md for an example of how to use it.

How to load this cluster GMSMapview into custom view like below ?

(void)loadView {
GMSCameraPosition *camera =
[GMSCameraPosition cameraWithLatitude:kCameraLatitude longitude:kCameraLongitude zoom:10];
_mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
self.myMapView = _mapView;
}

currently its loading only to self.view

@mountainvat Hello,
in this function:
func renderer(_ renderer: GMUClusterRenderer, willRenderMarker marker: GMSMarker) {}
makrer.iconView is always nil even if I set it up before like this:
func renderer(_ renderer: GMUClusterRenderer, willRenderMarker marker: GMSMarker) {

      // Check if marker or cluster
      if marker.userData is PlaceMarker {

          if let userData = marker.userData as? PlaceMarker {
             marker.iconView = MarkerView(caption: userData.caption)
          }

          marker.groundAnchor = CGPoint(x: 0.5, y: 1)
          marker.isFlat = true
          marker.appearAnimation = kGMSMarkerAnimationPop

      } else {
          // Apply custom view for cluster
          marker.iconView = ClusterViewIcon()

          // Show clusters above markers
          marker.zIndex = 1000;
          marker.groundAnchor = CGPoint(x: 0.5, y: 1)
          marker.isFlat = true
          marker.appearAnimation = kGMSMarkerAnimationPop
      }
  }

how can one implement a guard to only setup iconView and other marker properties only when the marker is rendered for the first time? otherwise it is just a waste of resources..

How many different cluster views do you have? If you have only 1 custom view (shared by many clusters) then I'd suggest return the same instance in ClusterViewIcon() so that the view is only rendered once.
In addition, this event is only raised once when the marker is brought into view unless a recluster happens (say on a zoom level change). For this maybe raise a separate issue and we will see if we can address it in the coming release.

I did it before - stored a pre-created view in a var,  and assigned this var to the iconView, thus the view was rendered only once. But now I need to setup captions. Each marker has it's own caption. So I can't use 1 view for every marker.
Exactly. On the zoom level change. If nothing changes (i.e. no clustering / declustering happens), we recreate already rendered markers and waste resources.


bundle clean --force removes gems bundled with Ruby

If I run bundle clean --force (in an effort to remove old gem version when the bundle needs to be updated), bundler will removed "bundled gems" - gems that are packaged with ruby.  (see https://stdgems.org/)
Suggest either adding a flag to not remove bundled gems or change the behavior of clean not to do it.

I was able to recreate the issue on a clean debian install with Ruby 2.5.1
$ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

$sudo gem install bundler
Fetching: bundler-1.16.3.gem (100%)
Successfully installed bundler-1.16.3
Parsing documentation for bundler-1.16.3
Installing ri documentation for bundler-1.16.3
Done installing documentation for bundler after 2 seconds
1 gem installed

$gem list

*** LOCAL GEMS ***

bigdecimal (default: 1.3.4)
bundler (1.16.3)
cmath (default: 1.0.0)
csv (default: 1.0.0)
date (default: 1.0.0)
dbm (default: 1.0.0)
did_you_mean (1.2.0)
etc (default: 1.0.0)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.0.2)
gdbm (default: 2.0.0)
io-console (default: 0.4.6)
ipaddr (default: 1.2.0)
json (default: 2.1.0)
minitest (5.10.3)
net-telnet (0.1.1)
openssl (default: 2.1.0)
power_assert (1.1.1)
psych (default: 3.0.2)
rake (12.3.0)
rdoc (default: 6.0.1)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
stringio (default: 0.0.1)
strscan (default: 1.0.0)
test-unit (3.2.7)
webrick (default: 1.4.2)
xmlrpc (0.3.0)
zlib (default: 1.0.0)

$ls
Gemfile

$cat Gemfile
source 'https://rubygems.org'

gem 'facets'

$bundle install
Fetching gem metadata from https://rubygems.org/..
Using bundler 1.16.3
Fetching facets 3.1.0

Your user account isn't allowed to install to the system RubyGems.
  You can cancel this installation and run:

      bundle install --path vendor/bundle

  to install the gems into ./vendor/bundle/, or you can enter your password
  and install the bundled gems to RubyGems using sudo.

  Password:
Installing facets 3.1.0
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

$gem list

*** LOCAL GEMS ***

bigdecimal (default: 1.3.4)
bundler (1.16.3)
cmath (default: 1.0.0)
csv (default: 1.0.0)
date (default: 1.0.0)
dbm (default: 1.0.0)
did_you_mean (1.2.0)
etc (default: 1.0.0)
facets (3.1.0)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.0.2)
gdbm (default: 2.0.0)
io-console (default: 0.4.6)
ipaddr (default: 1.2.0)
json (default: 2.1.0)
minitest (5.10.3)
net-telnet (0.1.1)
openssl (default: 2.1.0)
power_assert (1.1.1)
psych (default: 3.0.2)
rake (12.3.0)
rdoc (default: 6.0.1)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
stringio (default: 0.0.1)
strscan (default: 1.0.0)
test-unit (3.2.7)
webrick (default: 1.4.2)
xmlrpc (0.3.0)
zlib (default: 1.0.0)

$sudo bundle clean --force
Removing net-telnet (0.1.1)
Removing power_assert (1.1.1)
Removing xmlrpc (0.3.0)
Removing rake (12.3.0)
Removing test-unit (3.2.7)
Removing rdoc (6.0.1)
Removing minitest (5.10.3)
Removing did_you_mean (1.2.0)

$gem list

*** LOCAL GEMS ***

bigdecimal (default: 1.3.4)
bundler (1.16.3)
cmath (default: 1.0.0)
csv (default: 1.0.0)
date (default: 1.0.0)
dbm (default: 1.0.0)
etc (default: 1.0.0)
facets (3.1.0)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.0.2)
gdbm (default: 2.0.0)
io-console (default: 0.4.6)
ipaddr (default: 1.2.0)
json (default: 2.1.0)
openssl (default: 2.1.0)
psych (default: 3.0.2)
rdoc (default: 6.0.1)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
stringio (default: 0.0.1)
strscan (default: 1.0.0)
webrick (default: 1.4.2)
zlib (default: 1.0.0)

I think this is expected behavior. Bundled gems (as opposed to default gems) are just regular gems, and thus can be uninstalled normally.
From the link you included:

Bundled gems: The behavior of bundled gems is similar to normal gems, but they get automatically installed when you install Ruby. They can be uninstalled and they are maintained outside of Ruby core.

Maybe an option for clean to not delete these bundled gems?

Why do you want this feature? Isn't cleaning up unsued gems what you want when you run bundler clean --force? Even if it was accepted, it does not seem easy to implement since I'm not sure there's currently a way for bundler to distinguish between these gems and regular gems...

Lets say you start with a clean install of ruby.  In a Gemfile, you have dependencies defined for your project.  Because the bundled gems come with ruby, however, more than likely they won't be specified in the Gemfile.  (I know, they probably should be, but do you really trust that?).  Running bundle install will give you a working set of gems needed for the project.
running bundler clean --force deletes these gems, which means the gems that remain installed are not the same as when the project was started.

"bundled gems" don't get activated unless you include them in your Gemfile, so I'm not sure how this would be a problem.

It became an issue for us when we had a gem that had executables in it and used bundler to install the gem.  Since the executables are runnable outside of the context of bundler, it we saw the issue


Provide a dummy jax.key(...) that allows splitting, but not sampling

Hey guys,
When implementing a method that would statically (python control-flow) do something with a key, for example Dropout, it seems to be much neater to use some sort of dummy key, that would allow splitting, but don't allow sampling from it (meaning, statically throw). Here is an example:
@jax.jit(static_argnums=(1,))
def dropout(x, p, key):
  if p == 0.0:
    return x
  else:
    assert key is not None # get a decent error if no key given, instead of a weird error down the stack
    return actual_dropout(x, p, key)
y = jnp.zeros((5,))
x = dropout(y, 0.1, jr.key(0)) # all is good, ergonomic, etc etc
x = dropout(y, 0.0, None) # sad and ugly
x = dropout(y, 0.1, None) # should throw a meaningful error

# so far so good, but if we try to vmap...
v_drop = jax.vmap(dropout, static_argnums=(1,))
key = jr.key()
x = v_drop([y, y], [0.1, 0.2], jr.split(key, 2)) # fine
x = v_drop([y, y], [0.0, 0.0], [None, None]) # obviously does not work, and ugly

What I usually do is a use a placeholder key (eg jr.key(42)) but that possibly allows sampling from it, and i don't want that. The 'correct' way is to use Nones, but they force you to use too many switches in logic (e.g too many conditions in the final code, does not allow you to easily switch between the two modes), so my proposal is to have jr.dummy(0) that is splittable, but if one tries to sample it -> it throws tracing time. This way we can adapt the above example naively with:
key = jr.dummy(0) # or jr.key(0)
x = v_drop([y, y], [0.1, 0.2], jr.split(key, 2)) # fine
x = v_drop([y, y], [0.0, 0.0], jr.split(key, 2)) # also fine

I am happy to hear any critique, but it seems this should be pretty easy to implement: just attach some static property to a key when dummy and then when sampling check for this dummy property.

Hi @knyazer – I'm having a bit of trouble following the logic in your code: for example, you appear to be passing lists to vmap, in which case the function will map in parallel over the contents of each list item, not map over the entries in the list. Also, you use static_argnums within your vmap call, which is not a valid parameter.
I suspect this is meant to be pseudocode illustrative of your intent, but I think your intent is obscured by its invalidity: it's not clear to me what your actual problem is.
Perhaps you could edit your code to something that is executable to better show your intent?

Sorry, Jake! The reason I used an invalid-pseudo-jax code is because these days I mostly use Equinox, and I totally don't remember the syntax of the pure JAX :) Anyhow...
After dreaming up a "working" minimal example, I failed to actually make it meaningful: my example forces the user to write a singular additional condition, which is certainly not a good reason to introduce new functionality. I will think about it a bit, but, probably, the reason for this feature request is mainly my poor coding skills :)
Closing for now, will reopen if I come up with a good example. Sorry for the noise.

Cool, no worries. Feel free to reopen this or file another issue if something else comes up. We're always happy to help!


HTTP request: HTTP Error 503: Service Temporarily Unavailable

It was working fine till last week. All of a sudden I get this error. Does anybody face this problem?
An error occured during an HTTP request: HTTP Error 503: Service Temporarily Unavailable
Try to open in browser: https://twitter.com/search?q=cristianoronaldo since%3A2019-05-04 until%3A2019-05-05&src=typd

Check your Internet and Try again.


Clangd crash when parsing C++20 non-type template parameter of class type

System information
Output of clangd --version:
Ubuntu clangd version 14.0.6-++20220827082222+f28c006a5895-1~exp1~20220827202233.158
Features: linux
Platform: x86_64-pc-linux-gnu

Editor/LSP plugin:
VS Code clangd extension 0.1.21

Operating system:
<IP_ADDRESS>-microsoft-standard-WSL2 & Ubuntu 20.04

Problem
I was testing C++20 non-type template parameter of class type, and wrote some simple codes:
#include <iostream>

struct A {
    template<std::size_t N> constexpr A(const char (&str)[N]) : n(N) {}
    std::size_t n;
};

// It should be a legal function in C++20
template<A a> constexpr auto operator""_a() { return a.n; }

int main() { constexpr auto x = "abc"_a; }
//                          ^ hover here

Then I want to know if the x is an expected value, I used my mouse to hover it for several times, VS Code told me that:
The Clang Language Server server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.

My settings.json:
{
    "clangd.arguments": [
        "--clang-tidy",
        "-j=8",
        "--background-index",
        "--use-dirty-headers",
        "--compile-commands-dir=${workspaceFolder}/build",
        "--log=verbose"
    ]
}

Logs
stacktrace:
 #0 0x00007fe90e4f5311 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib/x86_64-linux-gnu/libLLVM-14.so.1+0xe4b311)
 #1 0x00007fe90e4f302c llvm::sys::RunSignalHandlers() (/lib/x86_64-linux-gnu/libLLVM-14.so.1+0xe4902c)
 #2 0x00007fe90e4f584b (/lib/x86_64-linux-gnu/libLLVM-14.so.1+0xe4b84b)
 #3 0x00007fe917766420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007fe90d2f5850 /build/glibc-SzIz7B/glibc-2.31/string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:383:0
 #5 0x00007fe90e3ed642 llvm::APInt::APInt(unsigned int, llvm::ArrayRef<unsigned long>) (/lib/x86_64-linux-gnu/libLLVM-14.so.1+0xd43642)
 #6 0x00007fe914dcc8fa (/lib/x86_64-linux-gnu/libclang-cpp.so.14+0xe628fa)
 #7 0x00007fe914dc09c9 clang::Stmt::printPretty(llvm::raw_ostream&, clang::PrinterHelper*, clang::PrintingPolicy const&, unsigned int, llvm::StringRef, clang::ASTContext const*) const (/lib/x86_64-linux-gnu/libclang-cpp.so.14+0xe569c9)
 #8 0x00007fe914c0bdf4 (/lib/x86_64-linux-gnu/libclang-cpp.so.14+0xca1df4)
 #9 0x00007fe914c02816 clang::Decl::print(llvm::raw_ostream&, clang::PrintingPolicy const&, unsigned int, bool) const (/lib/x86_64-linux-gnu/libclang-cpp.so.14+0xc98816)
#10 0x000000000069265e (/usr/bin/clangd+0x69265e)
#11 0x0000000000690512 (/usr/bin/clangd+0x690512)
#12 0x00000000005b5602 (/usr/bin/clangd+0x5b5602)
#13 0x000000000078e44b (/usr/bin/clangd+0x78e44b)
#14 0x0000000000785a49 (/usr/bin/clangd+0x785a49)
#15 0x00000000007853fb (/usr/bin/clangd+0x7853fb)
#16 0x000000000091844a (/usr/bin/clangd+0x91844a)
#17 0x00007fe91775a609 start_thread /build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:478:7
#18 0x00007fe90d289133 __clone /build/glibc-SzIz7B/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97:0
Signalled during AST worker action: Hover
  Filename: /home/joker/repo/test/main.cpp
  Directory: /home/joker/repo/test/build
  Command Line: /usr/lib/llvm-14/bin/clang++ --driver-mode=g++ -g -std=c++20 -o CMakeFiles/test.dir/main.cpp.o -c -resource-dir=/usr/lib/llvm-14/lib/clang/14.0.6 -- /home/joker/repo/test/main.cpp
  Version: 347

all output of vscode clangd extension:
I[02:09:23.501] Ubuntu clangd version 14.0.6-++20220827082222+f28c006a5895-1~exp1~20220827202233.158
I[02:09:23.501] Features: linux
I[02:09:23.501] PID: 10960
I[02:09:23.501] Working directory: /home/joker/repo/test
I[02:09:23.502] argv[0]: /usr/bin/clangd
I[02:09:23.502] argv[1]: --clang-tidy
I[02:09:23.502] argv[2]: -j=8
I[02:09:23.502] argv[3]: --background-index
I[02:09:23.502] argv[4]: --use-dirty-headers
I[02:09:23.502] argv[5]: --compile-commands-dir=/home/joker/repo/test/build
I[02:09:23.502] argv[6]: --log=verbose
V[02:09:23.502] User config file is /home/joker/.config/clangd/config.yaml
I[02:09:23.502] Starting LSP over stdin/stdout
V[02:09:23.502] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"markdown":{"parser":"marked","version":"1.1.0"},"positionEncodings":["utf-16"],"regularExpressions":{"engine":"ECMAScript","version":"ES2020"},"staleRequestSupport":{"cancel":true,"retryOnContentModified":["textDocument/semanticTokens/full","textDocument/semanticTokens/range","textDocument/semanticTokens/full/delta"]}},"notebookDocument":{"synchronization":{"dynamicRegistration":true,"executionSummarySupport":true}},"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"dynamicRegistration":true,"honorsChangeAnnotations":false,"isPreferredSupport":true,"resolveSupport":{"properties":["edit"]}},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"insertTextModeSupport":{"valueSet":[1,2]},"labelDetailsSupport":true,"preselectSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]},"contextSupport":true,"dynamicRegistration":true,"editsNearCursor":true,"insertTextMode":2},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"diagnostic":{"dynamicRegistration":true,"relatedDocumentSupport":false},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"labelSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"foldingRange":{"collapsedText":false},"foldingRangeKind":{"valueSet":["comment","imports","region"]},"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"inlayHint":{"dynamicRegistration":true,"resolveSupport":{"properties":["tooltip","textEdits","label.tooltip","label.location","label.command"]}},"inlineValue":{"dynamicRegistration":true},"linkedEditingRange":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"codeDescriptionSupport":true,"dataSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":false},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"honorsChangeAnnotations":true,"prepareSupport":true,"prepareSupportDefaultBehavior":1},"selectionRange":{"dynamicRegistration":true},"semanticTokens":{"augmentsSyntaxTokens":true,"dynamicRegistration":true,"formats":["relative"],"multilineTokenSupport":false,"overlappingTokenSupport":false,"requests":{"full":{"delta":true},"range":true},"serverCancelSupport":true,"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","operator","decorator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"typeHierarchy":{"dynamicRegistration":true}},"window":{"showDocument":{"support":true},"showMessage":{"messageActionItem":{"additionalPropertiesSupport":true}},"workDoneProgress":true},"workspace":{"applyEdit":true,"codeLens":{"refreshSupport":true},"configuration":true,"diagnostics":{"refreshSupport":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":true},"executeCommand":{"dynamicRegistration":true},"fileOperations":{"didCreate":true,"didDelete":true,"didRename":true,"dynamicRegistration":true,"willCreate":true,"willDelete":true,"willRename":true},"inlayHint":{"refreshSupport":true},"inlineValue":{"refreshSupport":true},"semanticTokens":{"refreshSupport":true},"symbol":{"dynamicRegistration":true,"resolveSupport":{"properties":["location.range"]},"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"changeAnnotationSupport":{"groupsOnLabel":true},"documentChanges":true,"failureHandling":"textOnlyTransactional","normalizesLineEndings":true,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"Visual Studio Code","version":"1.70.2"},"initializationOptions":{"clangdFileStatus":true,"fallbackFlags":[]},"locale":"zh-cn","processId":6052,"rootPath":"/home/joker/repo/test","rootUri":"file:///home/joker/repo/test","trace":"off","workspaceFolders":[{"name":"test","uri":"file:///home/joker/repo/test"}]}}

I[02:09:23.502] <-- initialize(0)
I[02:09:23.503] --> reply:initialize(0) 0 ms
V[02:09:23.503] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"compilationDatabase":{"automaticReload":true},"completionProvider":{"allCommitCharacters":[" ","\t","(",")","[","]","{","}","<",">",":",";",",","+","-","/","*","%","^","&","#","?",".","=","\"","'","|"],"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"hoverProvider":true,"implementationProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"Ubuntu clangd version 14.0.6-++20220827082222+f28c006a5895-1~exp1~20220827202233.158 linux x86_64-pc-linux-gnu"}}}

V[02:09:23.503] <<< {"jsonrpc":"2.0","method":"initialized","params":{}}

I[02:09:23.503] <-- initialized
V[02:09:23.505] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"#include <iostream>\n\nstruct A\n{\n    template<std::size_t N> constexpr A(const char (&str)[N]) : n(N) {}\n    std::size_t n;\n};\n\ntemplate<A a> constexpr auto operator\"\"_a() { return a.n; }\n\nint main() { constexpr auto x = \"abc\"_a; }\n","uri":"file:///home/joker/repo/test/main.cpp","version":347}}}

I[02:09:23.505] <-- textDocument/didOpen
V[02:09:23.506] config note at /home/joker/.config/clangd/config.yaml:2:0: Parsing config fragment
V[02:09:23.506] config note at /home/joker/.config/clangd/config.yaml:1:0: Parsed 1 fragments from file
V[02:09:23.506] Config fragment: compiling /home/joker/.config/clangd/config.yaml:2 -> 0x00007FE8E4002900 (trusted=true)
I[02:09:23.506] --> textDocument/publishDiagnostics
V[02:09:23.506] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[],"uri":"file:///home/joker/.config/clangd/config.yaml"}}

I[02:09:23.506] Loaded compilation database from /home/joker/repo/test/build/compile_commands.json
V[02:09:23.506] Broadcasting compilation database from /home/joker/repo/test/build
I[02:09:23.506] --> window/workDoneProgress/create(0)
V[02:09:23.506] >>> {"id":0,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"backgroundIndexProgress"}}

I[02:09:23.506] ASTWorker building file /home/joker/repo/test/main.cpp version 347 with command
[/home/joker/repo/test/build]
/usr/lib/llvm-14/bin/clang++ --driver-mode=g++ -g -std=c++20 -o CMakeFiles/test.dir/main.cpp.o -c -resource-dir=/usr/lib/llvm-14/lib/clang/14.0.6 -- /home/joker/repo/test/main.cpp
I[02:09:23.507] Enqueueing 1 commands for indexing
V[02:09:23.507] <<< {"id":0,"jsonrpc":"2.0","result":null}

I[02:09:23.507] <-- reply(0)
I[02:09:23.507] --> $/progress
V[02:09:23.507] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"begin","percentage":0,"title":"indexing"}}}

I[02:09:23.507] --> $/progress
V[02:09:23.507] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}}

V[02:09:23.509] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/joker/repo/test/main.cpp"}}}

I[02:09:23.509] <-- textDocument/documentSymbol(1)
V[02:09:23.509] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///home/joker/repo/test/main.cpp"}}}

I[02:09:23.509] <-- textDocument/documentLink(2)
V[02:09:23.509] Driver produced command: cc1 -cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=5 -debugger-tuning=gdb -fcoverage-compilation-dir=/home/joker/repo/test/build -resource-dir /usr/lib/llvm-14/lib/clang/14.0.6 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/backward -internal-isystem /usr/lib/llvm-14/lib/clang/14.0.6/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++20 -fdeprecated-macro -fdebug-compilation-dir=/home/joker/repo/test/build -ferror-limit 19 -fgnuc-version=4.2.1 -fno-implicit-modules -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /home/joker/repo/test/main.cpp
I[02:09:23.510] --> textDocument/clangd.fileStatus
V[02:09:23.510] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes, running Update (347)","uri":"file:///home/joker/repo/test/main.cpp"}}

V[02:09:23.510] Building first preamble for /home/joker/repo/test/main.cpp version 347
V[02:09:23.523] BackgroundIndex: building version 1 after loading index from disk
V[02:09:23.535] BackgroundIndex: serving version 1 (7138881 bytes)
I[02:09:23.537] --> $/progress
V[02:09:23.537] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}}

I[02:09:23.537] --> $/progress
V[02:09:23.537] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"end"}}}

V[02:09:23.665] indexed preamble AST for /home/joker/repo/test/main.cpp version 347:
  symbol slab: 5609 symbols, 1776544 bytes
  ref slab: 0 symbols, 0 refs, 128 bytes
  relations slab: 306 relations, 8728 bytes
V[02:09:23.679] Build dynamic index for header symbols with estimated memory usage of 4118532 bytes
V[02:09:23.682] Built preamble of size 3542304 for file /home/joker/repo/test/main.cpp version 347
I[02:09:23.682] --> workspace/semanticTokens/refresh(1)
V[02:09:23.682] >>> {"id":1,"jsonrpc":"2.0","method":"workspace/semanticTokens/refresh","params":null}

V[02:09:23.683] <<< {"id":1,"jsonrpc":"2.0","result":null}

I[02:09:23.683] <-- reply(1)
V[02:09:23.689] <<< {"id":3,"jsonrpc":"2.0","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///home/joker/repo/test/main.cpp"}}}

I[02:09:23.689] <-- textDocument/semanticTokens/full(3)
V[02:09:23.691] indexed file AST for /home/joker/repo/test/main.cpp version 347:
  symbol slab: 5 symbols, 5376 bytes
  ref slab: 6 symbols, 10 refs, 4416 bytes
  relations slab: 0 relations, 24 bytes
V[02:09:23.691] Build dynamic index for main-file symbols with estimated memory usage of 13832 bytes
I[02:09:23.691] --> textDocument/publishDiagnostics
V[02:09:23.691] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[],"uri":"file:///home/joker/repo/test/main.cpp","version":347}}

V[02:09:23.691] ASTWorker running DocumentSymbols on version 347 of /home/joker/repo/test/main.cpp
I[02:09:23.691] --> reply:textDocument/documentSymbol(1) 181 ms
V[02:09:23.691] >>> {"id":1,"jsonrpc":"2.0","result":[{"children":[{"detail":"template (const char (&)[N])","kind":9,"name":"A","range":{"end":{"character":71,"line":4},"start":{"character":28,"line":4}},"selectionRange":{"end":{"character":39,"line":4},"start":{"character":38,"line":4}}},{"detail":"std::size_t","kind":8,"name":"n","range":{"end":{"character":17,"line":5},"start":{"character":4,"line":5}},"selectionRange":{"end":{"character":17,"line":5},"start":{"character":16,"line":5}}}],"detail":"struct","kind":23,"name":"A","range":{"end":{"character":1,"line":6},"start":{"character":0,"line":2}},"selectionRange":{"end":{"character":8,"line":2},"start":{"character":7,"line":2}}},{"detail":"template auto ()","kind":12,"name":"operator\"\"_a","range":{"end":{"character":59,"line":8},"start":{"character":14,"line":8}},"selectionRange":{"end":{"character":37,"line":8},"start":{"character":29,"line":8}}},{"detail":"int ()","kind":12,"name":"main","range":{"end":{"character":42,"line":10},"start":{"character":0,"line":10}},"selectionRange":{"end":{"character":8,"line":10},"start":{"character":4,"line":10}}}]}

V[02:09:23.691] ASTWorker running DocumentLinks on version 347 of /home/joker/repo/test/main.cpp
I[02:09:23.691] --> reply:textDocument/documentLink(2) 181 ms
V[02:09:23.691] >>> {"id":2,"jsonrpc":"2.0","result":[{"range":{"end":{"character":19,"line":0},"start":{"character":9,"line":0}},"target":"file:///usr/include/c%2B%2B/9/iostream"}]}

V[02:09:23.691] ASTWorker running SemanticHighlights on version 347 of /home/joker/repo/test/main.cpp
I[02:09:23.691] --> reply:textDocument/semanticTokens/full(3) 1 ms
V[02:09:23.691] >>> {"id":3,"jsonrpc":"2.0","result":{"data":[2,7,1,8,8193,2,13,3,15,8448,0,5,6,18,4352,0,7,1,16,1033,0,13,1,8,2049,0,15,3,2,1025,0,5,1,16,1032,0,6,1,6,2048,0,2,1,16,1032,1,4,3,15,8448,0,5,6,18,4352,0,7,1,6,2049,3,9,1,8,8192,0,2,1,16,1033,0,42,1,16,1032,0,2,1,6,2048,2,4,4,3,8193,0,19,4,18,8452,0,5,1,1,1033],"resultId":"1"}}

I[02:09:23.691] --> textDocument/clangd.fileStatus
V[02:09:23.691] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///home/joker/repo/test/main.cpp"}}

V[02:11:13.056] <<< {"id":4,"jsonrpc":"2.0","method":"textDocument/hover","params":{"position":{"character":28,"line":10},"textDocument":{"uri":"file:///home/joker/repo/test/main.cpp"}}}

I[02:11:13.056] <-- textDocument/hover(4)
V[02:11:13.058] ASTWorker running Hover on version 347 of /home/joker/repo/test/main.cpp
 #0 0x00007fe90e4f5311 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib/x86_64-linux-gnu/libLLVM-14.so.1+0xe4b311)
 #1 0x00007fe90e4f302c llvm::sys::RunSignalHandlers() (/lib/x86_64-linux-gnu/libLLVM-14.so.1+0xe4902c)
 #2 0x00007fe90e4f584b (/lib/x86_64-linux-gnu/libLLVM-14.so.1+0xe4b84b)
 #3 0x00007fe917766420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007fe90d2f5850 /build/glibc-SzIz7B/glibc-2.31/string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:383:0
 #5 0x00007fe90e3ed642 llvm::APInt::APInt(unsigned int, llvm::ArrayRef<unsigned long>) (/lib/x86_64-linux-gnu/libLLVM-14.so.1+0xd43642)
 #6 0x00007fe914dcc8fa (/lib/x86_64-linux-gnu/libclang-cpp.so.14+0xe628fa)
 #7 0x00007fe914dc09c9 clang::Stmt::printPretty(llvm::raw_ostream&, clang::PrinterHelper*, clang::PrintingPolicy const&, unsigned int, llvm::StringRef, clang::ASTContext const*) const (/lib/x86_64-linux-gnu/libclang-cpp.so.14+0xe569c9)
 #8 0x00007fe914c0bdf4 (/lib/x86_64-linux-gnu/libclang-cpp.so.14+0xca1df4)
 #9 0x00007fe914c02816 clang::Decl::print(llvm::raw_ostream&, clang::PrintingPolicy const&, unsigned int, bool) const (/lib/x86_64-linux-gnu/libclang-cpp.so.14+0xc98816)
#10 0x000000000069265e (/usr/bin/clangd+0x69265e)
#11 0x0000000000690512 (/usr/bin/clangd+0x690512)
#12 0x00000000005b5602 (/usr/bin/clangd+0x5b5602)
#13 0x000000000078e44b (/usr/bin/clangd+0x78e44b)
#14 0x0000000000785a49 (/usr/bin/clangd+0x785a49)
#15 0x00000000007853fb (/usr/bin/clangd+0x7853fb)
#16 0x000000000091844a (/usr/bin/clangd+0x91844a)
#17 0x00007fe91775a609 start_thread /build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:478:7
#18 0x00007fe90d289133 __clone /build/glibc-SzIz7B/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97:0
Signalled during AST worker action: Hover
  Filename: /home/joker/repo/test/main.cpp
  Directory: /home/joker/repo/test/build
  Command Line: /usr/lib/llvm-14/bin/clang++ --driver-mode=g++ -g -std=c++20 -o CMakeFiles/test.dir/main.cpp.o -c -resource-dir=/usr/lib/llvm-14/lib/clang/14.0.6 -- /home/joker/repo/test/main.cpp
  Version: 347
[Info  - 2:11:13] Connection to server got closed. Server will restart.
[Error - 2:11:13] Request textDocument/hover failed.

Confirmed. Symbolicated stack trace:
 #0 0x00007f17ce00366a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) llvm/src/llvm/lib/Support/Unix/Signals.inc:565:11
 #1 0x00007f17ce00381b PrintStackTraceSignalHandler(void*) llvm/src/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x00007f17ce001eb6 llvm::sys::RunSignalHandlers() llvm/src/llvm/lib/Support/Signals.cpp:103:5
 #3 0x00007f17ce003f45 SignalHandler(int) llvm/src/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f17d3ff0730 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12730)
 #5 0x00007f17cd3aa7bb raise /build/glibc-fWwxX8/glibc-2.28/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #6 0x00007f17cd395535 abort /build/glibc-fWwxX8/glibc-2.28/stdlib/abort.c:81:7
 #7 0x00007f17cd39540f _nl_load_domain /build/glibc-fWwxX8/glibc-2.28/intl/loadmsgcat.c:1177:9
 #8 0x00007f17cd3a3102 (/lib/x86_64-linux-gnu/libc.so.6+0x30102)
 #9 0x00007f17cf188486 clang::TemplateArgument::pack_begin() const llvm/src/clang/include/clang/AST/TemplateBase.h:0:5
#10 0x00007f17cf1836b9 clang::TemplateArgument::pack_elements() const llvm/src/clang/include/clang/AST/TemplateBase.h:366:31
#11 0x00007f17cf8fe40d (anonymous namespace)::StmtPrinter::VisitUserDefinedLiteral(clang::UserDefinedLiteral*) llvm/src/clang/lib/AST/StmtPrinter.cpp:1916:31
#12 0x00007f17cf8f7eb9 clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::StmtPrinter, void>::Visit(clang::Stmt*) llvm/build/tools/clang/include/clang/AST/StmtNodes.inc:923:1
#13 0x00007f17cf8f6dd7 (anonymous namespace)::StmtPrinter::Visit(clang::Stmt*) llvm/src/clang/lib/AST/StmtPrinter.cpp:149:5
#14 0x00007f17cf8f6ceb clang::Stmt::printPretty(llvm::raw_ostream&, clang::PrinterHelper*, clang::PrintingPolicy const&, unsigned int, llvm::StringRef, clang::ASTContext const*) const llvm/src/clang/lib/AST/StmtPrinter.cpp:2640:1
#15 0x00007f17cf55b5dd (anonymous namespace)::DeclPrinter::VisitVarDecl(clang::VarDecl*) llvm/src/clang/lib/AST/DeclPrinter.cpp:916:12
#16 0x00007f17cf554ce9 clang::declvisitor::Base<std::add_pointer, (anonymous namespace)::DeclPrinter, void>::Visit(clang::Decl*) llvm/build/tools/clang/include/clang/AST/DeclNodes.inc:473:1
#17 0x00007f17cf5547fa clang::Decl::print(llvm::raw_ostream&, clang::PrintingPolicy const&, unsigned int, bool) const llvm/src/clang/lib/AST/DeclPrinter.cpp:134:1
#18 0x00007f17d338e455 clang::clangd::(anonymous namespace)::printDefinition[abi:cxx11](clang::Decl const*, clang::PrintingPolicy, clang::syntax::TokenBuffer const&) llvm/src/clang-tools-extra/clangd/Hover.cpp:140:3
#19 0x00007f17d338a013 clang::clangd::(anonymous namespace)::getHoverContents(clang::NamedDecl const*, clang::PrintingPolicy const&, clang::clangd::SymbolIndex const*, clang::syntax::TokenBuffer const&) llvm/src/clang-tools-extra/clangd/Hover.cpp:641:19
#20 0x00007f17d3388e56 clang::clangd::getHover(clang::clangd::ParsedAST&, clang::clangd::Position, clang::format::FormatStyle const&, clang::clangd::SymbolIndex const*) llvm/src/clang-tools-extra/clangd/Hover.cpp:1039:12
#21 0x00007f17d30fc9d7 clang::clangd::ClangdServer::findHover(llvm::StringRef, clang::clangd::Position, llvm::unique_function<void (llvm::Expected<llvm::Optional<clang::clangd::HoverInfo>>)>)::$_11::operator()(llvm::Expected<clang::clangd::InputsAndAST>) llvm/src/clang-tools-extra/clangd/ClangdServer.cpp:712:8
#22 0x00007f17d30fc7c2 void llvm::detail::UniqueFunctionBase<void, llvm::Expected<clang::clangd::InputsAndAST>>::CallImpl<clang::clangd::ClangdServer::findHover(llvm::StringRef, clang::clangd::Position, llvm::unique_function<void (llvm::Expected<llvm::Optional<clang::clangd::HoverInfo>>)>)::$_11>(void*, llvm::Expected<clang::clangd::InputsAndAST>&) llvm/src/llvm/include/llvm/ADT/FunctionExtras.h:222:5
#23 0x00007f17d36a01c7 llvm::unique_function<void (llvm::Expected<clang::clangd::InputsAndAST>)>::operator()(llvm::Expected<clang::clangd::InputsAndAST>) llvm/src/llvm/include/llvm/ADT/FunctionExtras.h:384:5
#24 0x00007f17d369e1d4 clang::clangd::(anonymous namespace)::ASTWorker::runWithAST(llvm::StringRef, llvm::unique_function<void (llvm::Expected<clang::clangd::InputsAndAST>)>, clang::clangd::TUScheduler::ASTActionInvalidation)::$_1::operator()() llvm/src/clang-tools-extra/clangd/TUScheduler.cpp:938:5

And the assertion causing the crash:
clang::TemplateArgument::pack_iterator clang::TemplateArgument::pack_begin() const: Assertion `getKind() == Pack' failed

It looks like C++20 has extended the "literal operator template" feature, to allow the template to have a single non-type parameter of class type, which is not a pack (previously, it could only be a pack of char).
However, StmtPrinter has not been updated to reflect this, and expects a pack.

Proposed fix


What is the version of numba?

Please check pynndescent for specific numba versions. openTSNE only depends on numba indirectly through pynndescent.


[kafka_consumer] Support fetching Kafka consumer offsets stored in kafka

DO NOT MERGE as still a WIP
Works, and the structure is pretty well fleshed out, but some of the error cases need more fleshing out, along with I plan to finish extending this to support time-based offsets. @truthbk and I have been discussing this in the datadog slack channel.
This is a functioning check that fetches consumer offset stored in
Kafka. We run it in production against 6 different kafka clusters.
It includes support for automatically fetching consumer groups so that you don't have to manually list them. This is a common problem when teams spin up new consumer groups but forget to update the check yaml file. Due to the way Kafka protocol works, support for auto-listing consumer groups requires broker versions >= 0.10.2. For context, brokers starting with 0.9 will list consumer groups, but it's very difficult to identify which topics those groups are consuming, so effectively there's no value to knowing the list of consumer groups. In 0.10.2, a new protocol call was added that makes it much easier to list the topics a consumer group is consuming. So this check supports auto-listing groups if the broker reports a version => 0.10.2.
Additionally, this has the beginning of support for the new time-based offsets that were added in Kafka 0.10.1. Note that this will need to be a second set of metrics to store timestamps and calculate time-based lag rather than integer based lag.
Fixes:

https://github.com/DataDog/dd-agent/issues/2611
https://github.com/DataDog/integrations-core/issues/457

@jeffwidman awesome stuff! Thanks for the clear title to the PR. This is great to see how we should move next, I expect to put in some serious review-time in the next couple of days, and we can the sync up with the next steps. Thank you so much!

@truthbk and I were discussing this over slack, and he mentioned wanting to merge this into a single check. I had originally tried this when I worked on it, but decided against it. Unfortunately, during our slack conversation, I couldn't remember all the problems with that approach.
Here are the problems that would need to be worked around if combining into a single check:

Code complexity of mixing zookeeper + kafka consumer offset checking. In reality, this isn't too bad because you just forklift in a few extra functions, and a single check benefits from no code duplication for fetching broker offsets.

How do we write the check so that it checks kafka-based offsets all the time, but zookeeper offsets far less frequently? In production, we run the zookeeper check only once every 10 minutes to avoid hitting zookeeper too hard. But we don't rate limit the kafka check at all because the load on the kafka brokers is trivial since they have an in-memory cache of consumer offsets. My team much prefers this because code changes show up immediately in the dashboard, as well as the higher granularity when debugging. The zookeeper rate-limiting happens through the min_collection_interval param, which applies to the entire check. I'm not aware of a way to have a single check rate-limit only a portion of the check, which means that we're stuck between either hitting zookeeper very frequently, or only checking our kafka-based consumers every 10 minutes, neither of which we're excited about.

It is impossible to know what the authoritative source of offsets should be for old-style consumer groups (Java, kafka-python's SimpleConsumer, pykafka's older consumer, etc). These groups always store their name in Zookeeper, but can store their offsets in either zookeeper or kafka. And only the client knows which is correct. There are a lot of edge-cases here, and it's valid according to the official Kafka docs for someone to temporarily enable storing offsets in kafka, then switch back to storing them in zookeeper. Which one do we report? I guarantee that in the middle of a migration like this, that users will be watching their monitoring screens very, very closely. And they won't want to delete the old set of offsets until they are sure the migration is stable, so for a while you'll have two sets of offsets--if we report both, the graph will be jumping all over the place, causing confusion. And even if they realize they have two different places where the offsets are stored, there's no easy way to delete the offset from kafka's __consumer_offsets topic--typically ops will need to wait for offsets.retention.minutes to pass. So in the config.yaml, we now need a way for the user to identify the authoritative source of the offset, which breaks the backwards compatibility and simplicity benefits of staying with a single check.

It becomes more complicated to explain how the monitor_unlisted_consumer_groups param works:

For zk-based offsets, we iterate through ZK to get all the consumer groups's offsets, so we can do this for all old-style consumer groups who store their offsets in Zookeeper.
For new-style consumer groups, while it's possible to get the list of them, there is no way easy way to fetch their offsets for brokers < <IP_ADDRESS>. The problem is the kafka protocol didn't have a way to query which topics/partitions a consumer group was consuming. But to fetch consumer offsets, the  protocol required submitting both the consumer group and the partition for which you want the offset. Since you don't know the topics/partitions, you can't fetch the offset. This was fixed in <IP_ADDRESS>, so it's easy in split-checks to simply write "this param only supported for brokers <IP_ADDRESS> and newer."
For old-style consumers who store their offsets in Kafka, some clients store the topics they're consuming in Zookeeper, some don't. I know the pykafka one works fine without storing the topic in zookeeper. Since these are old-style groups, they are never returned by the ListGroups Kafka protocol call. The only way to know about them is to fetch it from zookeeper or have the user specify them. And at that point we hit the problem mentioned in 3 above where the user has to either specify that this consumer group stores its offset in kafka or we have to make some assumptions which will always be incorrect for some valid set of use cases. They also have the same problem that until <IP_ADDRESS>, it's impossible to know which topics/partitions they're consuming unless the user manually specifies it or they store their topics in zookeeper.
So essentially you end up saying, "The monitor_unlisted_consumer_groups param is supported across all broker versions for consumer groups that store their offsets in zookeeper, only in <IP_ADDRESS> for new-style consumer groups, and for old-style consumer groups that store their offsets in Kafka either this param is not supported, or we have to make some assumptions in the business logic of the check, which will always be incorrect for some valid set of use cases." I'm not sure your support team is excited about explaining that.

If this all sounds complex, it's because it is and there's a lot of edge cases. That's why after I realized what was going on I threw up my hands and decided the simplest solution was for the user to tell always us whether the authoritative offset was in zookeeper or kafka. And the best API to do that was via two separate YAML files as it was both simple and maintained full backward compatibility. This also made the monitor_unlisted_consumer_groups param much simpler to both explain and write the logic for.
Maybe I'm missing something and there are easy solutions to the above problems. I absolutely agree that if they can be solved, a single check is better. But if they can't, I think two-checks are simpler to document, simpler to code, and retains backwards compatibility.

In production, the collector.log is full of:
2017-06-02 20:53:23 UTC | INFO | dd.collector | kafka.cluster(cluster.py:325) | Group coordinator for anonymous_group is BrokerMetadata(nodeId=5, host=u'kafka05.site.net', port=9092, rack=None)

This log line is coming from kafka-python, need to figure out a way to suppress it.

Thanks for working on this. I've got new Kafka consumers pulling data and I am ready to move ahead today!

Hi there! I'm super curious about the status of this PR? We're running Kafka 0.11 in production, and hopefully the above fix will help us get consumer metrics?

Any progress with this?

This PR was superseded by https://github.com/DataDog/integrations-core/pull/654 - the main reason being we do not want to have a separate check for consumer offsets stored in kafka, favoring instead an approach where both kafka and zookeeper consumer offsets could be collected by the same check, and harnessing tagging to identify the source of the metric. This approach might come particularly handy for customers in the middle of a migration, it should also allow for a more straight-forward migration of dashboards and alert (in many cases seamless).
cc @hawkaa @shaharmor

Closing in favor of #654. Glad to see some movement on this!
I do have some concerns about the new check, see https://github.com/DataDog/integrations-core/pull/654#pullrequestreview-69986979


incorrect object returned by model.get

having multiple schemas and multiple objects from these schema
ipdb> print(schema)
proj.human
ipdb> model
model:proj.human

ipdb> model.new()._schema
## SCHEMA: proj.human

prop:name                      string
prop:phone                     string

ipdb> model.get(1)._schema
## SCHEMA: proj.person

prop:name                      string
prop:email                     string

calling new gives the correct objct from schema proj.human while calling get(1) gets another object from another schema!
schemas

j.data.schema.add_from_text("""
@url = proj.email
addr* = "" (S)
""")
j.data.schema.add_from_text("""
@url = proj.person
name* = "" (S)
email* = "" !proj.email
""")

j.data.schema.add_from_text("""
@url = proj.os
name* = "" (S)
""")

j.data.schema.add_from_text("""
@url = proj.phone
model* = "" (S)
os* = "" !proj.os
""")

j.data.schema.add_from_text("""
@url = proj.lang
name* = ""
""")

j.data.schema.add_from_text("""
@url = proj.human
name* = "" (S)
favnums = (LS)
langs = (LO) !proj.lang
phone* = "" !proj.phone
""")

I think in this case what should happen is that error is raised when the id does not correspond to the model.
Otherwise it just doesn't make sense and instead you should use get_by_name

@rkhamis problem is get on model actually delegates the call to model.bcdb.get which returns the object by auto incremented creation id
get on model should return the object with respect to the model itself.
does get_by_name  assume that there's name property on every model? or is created implicitly?

Fixed it by Raise error if we didn't have this id in our object model

Verified


textBox not identifying angular input textbox but textField identifying the control with Deprecation warning

Expected behavior
Need to identify username control which is from an Angular application using "textBox" selector
Actual behavior
textBox not identifying angular input textbox but textField identifying the control with Deprecation warning
textbox:
Command: write("catchsystemadmin", into(textBox({name:"username"})))
Error:
[FAIL] Error: Text field[@name = concat('username', "")] not found, run .trace for more info.
inputField:

<EMAIL_ADDRESS>into(inputField({id:"username"})))
DEPRECATION WARNING: inputField is deprecated, use textBox api instead
[PASS] Wrote<EMAIL_ADDRESS>into the input field[@id = concat('username', "")]

Versions
Version: 1.0.2 (Chromium:76.0.3803.0)

@srajkavithaa I am able to replicate the same. Here is the below code:
const { openBrowser, goto, click, textBox,write, into, closeBrowser } = require('taiko');
(async () => {
    try {
        await openBrowser();
        await goto("https://catchsoftware.com/");
        await click("CONTACT US");
        write('xyz',into(textBox({id:'first_name'})))
    } catch (error) {
        console.error(error);
    } finally {
        await closeBrowser();
    }
})();

Please feel free to add your comments if i missed out any information.
Tested version:
Version: 1.0.3 (Chromium: 79.0.3945.16) 920b467de1f1dfc55780dc5a6d7c81c3bd42ce5e

write is an async function so await should be added.
const { openBrowser, goto, click, textBox,write, into, closeBrowser } = require('taiko');
(async () => {
    try {
        await openBrowser();
        await goto("https://catchsoftware.com/");
        await click("CONTACT US");
        await write('xyz',into(textBox({id:'first_name'})))
    } catch (error) {
        console.error(error);
    } finally {
        await closeBrowser();
    }
})();

The above script works as expected.

Hi Apoorva, thanks for your comments, but the problem I am facing is to identify an angular control which is having an id & name fields.
This is my control:
<input _ngcontent-lbv-c3="" class="mat-input-element mat-form-field-autofill-control cdk-text-field-autofill-monitored ng-pristine ng-invalid ng-touched" id="username" matinput="" name="username" placeholder="Username" required="" type="textbox" aria-invalid="true" aria-required="true">Username *
and I used this command and got the error:
await<EMAIL_ADDRESS>into(textBox({id:"username"})))
[FAIL] Error: Text field[@id = concat('username', "")] not found, run .trace for more info.
But inputField is working fine for me :) :(

<EMAIL_ADDRESS>into(inputField({id:"username"})))
DEPRECATION WARNING: inputField is deprecated, use textBox api instead
[PASS] Wrote<EMAIL_ADDRESS>into the input field[@id = concat('username', "")]

Please check and help,
Thanks,
Kavitha

@srajkavithaa In your case the input type is textbox, which is not a standard input type. Hence it is not supported by the textBox api of Taiko.
Note: inputField works because it matches anything with an input tag.

Hi Apoorva, thanks for the update, As "inputField" mentioned as deprecated, is there any time limit for that and may I know what is the alternative going forward to support all controls with input tag. Thanks again.

Unfortunately there won't be replacement api for non standard elements. It's best to use normal Xpath, css or id selectors for this case.


Fix type errors

I fixed some type errors, which surfaced when trying to compile vte-ng with
gcc 5.4 during packaging for the Nix package manager.

Thank you for contributing to vte!
vte uses Bugzilla for code review.
If you have never contributed to GNOME before make sure you have read the
getting started documentation:
http://www.gnome.org/get-involved
Otherwise please visit
https://wiki.gnome.org/Newcomers/CodeContributionWorkflow
and follow the instructions there to upload your change to Bugzilla.


Maven dependency not work

Describe the bug
When i follow the pathling for maven from the home page, and copy the dependency to my pom file, i get this error.
au.csiro.pathling:pathling:jar:7.0.1 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced
so my import statement for au.csiro.pathling doesnt work
To Reproduce
create a maven project in eclipse -> add the pathling depenency mentioned above into your pom dependencies
Expected behavior
dependency doesnt have error and import statement works

Hi @yehtunkhine,
I don't think that is the right dependency.
What does the dependency look like in your POM?
Here is what it should look like: https://pathling.csiro.au/docs/libraries/installation#java


uv pip fails for git+

uv 0.1.11 for linux
uv pip fails for this, which works with normal pip
uv pip install "git+https://github.com/stanford-futuredata/megablocks.git"

Results:
uv pip install git+https://github.com/stanford-futuredata/megablocks.git
error: Failed to parse `git+https://github.com/stanford-futuredata/megablocks.git`
  Caused by: URL requirement must be preceded by a package name. Add the name of the package before the URL (e.g., `package_name @ https://...`).
git+https://github.com/stanford-futuredata/megablocks.git
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

We support installing git+ dependencies, but you have to prefix them with the package name:
uv pip install "megablocks @ git+https://github.com/stanford-futuredata/megablocks.git"

We'll likely lift this constraint in the future. You can track it here: https://github.com/astral-sh/uv/issues/313. There are a bunch of similar issues linked to that PR if you're interested.


"/bin/sh: perl6: not found" after update 8 may

Travis builds are failed after container update from 8 may.
It says /bin/sh: perl6: not found
IMAGE ID: 0cd12d4e2d90
For example https://travis-ci.org/atroxaper/p6-Scheduler-DelayBetween/builds/529875340

Ah, OK, good one. Thanks for reporting. I'll try to have it fixed now. Sorry.


Changed dead zone in MRTK-created input axes to the Unity default (0.19)

This fixes #4366.

/azp run mrtk_pr


Increase open file limit in systemd example

Closes #96

This doesn't seem like an appropriate fix. If we are surpassing 4k file descriptors open, there is a likely leak that needs to be addressed.
If the symptoms went away at 8k or 16k I would be less concerned, but that still smells like files are being opened without being closed.

I agree with Mark. Horcrux opening thousands of file descriptors seems like a resource leak. I would think it only needs a finite number of tcp connections and a handful of files.

Good call out, I was reading through raft-backed software (such as consul and vault) issues online and found a few that make it look like it's related to raft:
https://github.com/hashicorp/consul/issues/688
https://gitter.im/hashicorp-consul/Lobby?at=59947450c101bc4e3a246aa9
https://support.hashicorp.com/hc/en-us/articles/4404296500115-Error-socket-too-many-open-files-
But after receiving more information from PFC, it appears that there is a connection fd leak.


Warnings

can you please provide a proper pull request title and description?

@bbolen , can you fix some #if CONFIG_USERSPACE, in ARM and ARC stack as well?

@bbolen , can you fix some #if CONFIG_USERSPACE, in ARM and ARC stack as well?
Yes.  I'll send it as a separate PR in a few days.


Scenario tweaking and more

A few questions (sorry if they are bothersome. I feel like I need a series of guidelines of what to do and what not to do when translating):
When the "っ" is at the end of a Japanese word like "くすくすっ", may it be translated as "--", as in "Kusukusu--"; or may it be dropped, as in "Kusukusu"?
In the parts where the Japanese text is the same (e.g., when the player character wakes up to a girl doing some sexual act on him), should the translation be the same throughout, or may the text have different translations so that it would not be too repetitive? I got this from looking at some of the translations from the Koikatsu Party translation, which does just that.

Everything looks good, but I'm not sure what to do with the zz_machineTranslation edits, I think they should be moved to normal translation files?

So this is what we should do after sufficiently cleaning up the machine translation files. Yes. I'll get to it.

I moved the machine translation files to the normal translation files (not the communication translations yet).


fix(version): set v0.0.0 as the baseline for semantic release versioning

:tada: This PR is included in version 0.0.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Local-first guidelines

What
Closes https://github.com/rerun-io/rerun/issues/4153
Checklist

[x] I have read and agree to Contributor Guide and the Code of Conduct
[x] I've included a screenshot or gif (if applicable)
[x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/{{ pr.number }}) (if applicable)
[x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG

[PR Build Summary](https://build.rerun.io/pr/{{ pr.number }})
[Docs preview](https://rerun.io/preview/{{ pr.commit }}/docs)
[Examples preview](https://rerun.io/preview/{{ pr.commit }}/examples)
Recent benchmark results
Wasm size tracking

(not wasting CI for this one)

Nice!


XCM. Polkadot Asset Hub can't calculate fee in direct transfer

Description
Error getting fee -  Error: createType(Call):: Call: failed decoding assets.transfer:: Struct: failed on args: {"id":"Compact<u32>","target":"MultiAddress","amount":"Lookup45"}:: Struct: failed on id: Compact<u32>:: u32: Input too large. Found input with 33 bits, expected 32

Environment
https://github.com/novasamatech/nova-spektr/commit/e5884fa5312fdd7154a5c988bf0f6655f97315d0

Status verification: ✅


Support for module loading systems.

There's no requirement (yet) for Leaflet plugins to assume JS module loading systems, but we would play very nice with many projects' build environments if we did. See the ongoing discussion here. https://github.com/Leaflet/Leaflet/issues/2364
I've introduced this on a separate branch (https://github.com/pelias/leaflet-geocoder/tree/v0.0.3) maybe one in which new work happens.
TODO: test this

Done in v.0.0.3 and tested in what3emojis :)


Islet Mentorship: Strengthening Security through Fuzz Testing

Islet Mentorship: Strengthening Security through Fuzz Testing
This issue provides a brief description of the Linux Foundation Mentorship opportunity for Islet. This Issue is for potential mentees and project mentors to review and discuss.
Description:
Enhance Islet’s security by identifying vulnerabilities early using fuzz testing. This project integrates Cargo Fuzz tools with Islet’s CI pipeline, focusing on testing RMM interfaces (RMI and RSI) based on ARM’s RMM specification.
Expected Outcome: Deliver a set of robust fuzz tests integrated into Islet’s CI, improving security and compliance with ARM standards.
Recommended Skills: Knowledge of Rust programming and fuzz testing. Familiarity with confidential computing, virtualization, and ARM architecture is helpful but not required.
Mentor(s):
Bokdeuk Jeong (@bokdeuk-jeong, <EMAIL_ADDRESS>Sangwan Kwon (@bitboom, <EMAIL_ADDRESS>

Interested candidates can read this to get a good enough understanding of Remote ATtestation procedureS (RATS) Architecture:
https://github.com/CCC-Attestation/rats-cheatsheet?tab=readme-ov-file#rats-cheat-sheet

interested on contributing towards this project.

I am excited about the prospect of helping to make Islet's security even stronger using full-fledged fuzz testing. My method will rely on Cargo Fuzz and use it to systematically stress-test the RMM interfaces (RMI and RSI) in a focused manner of producing edge-case inputs to possibly expose weaknesses in ARM CCA implementation.
The RMM interface has potential attack surfaces within its boundaries. We need to develop comprehensive test cases that cover both expected and unexpected input scenarios and seamlessly integrate these fuzz tests into Islet's existing CI pipeline
I have been analysing islet codebase to understand it better and I look forward to deepening my understanding under the guidance of experienced mentors.

Hi @Shruti78 and @ksachin7,
Thank you so much for showing interest in Islet and for expressing your willingness to participate!
Here's the link to apply for the mentorship program.
https://mentorship.lfx.linuxfoundation.org/project/fbd406ee-5d76-4d8b-939d-c37d42643fa8
If you have any questions, feel free to reach out anytime.
Looking forward to working together on this exciting project!

Hi @bokdeuk-jeong getting following error
error: could not compile rsi-test` (bin "rsi-test"); 1 warning emitted
Caused by:
process didn't exit successfully: /Users/sachin/.rustup/toolchains/nightly-aarch64-apple-darwin/bin/rustc --crate-name rsi_test --edition=2021 realm/rsi-test/src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=107 --crate-type bin --emit=dep-info,link -C panic=abort -C embed-bitcode=no -C debuginfo=2 -C split-debuginfo=unpacked --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(feature, values())' -C metadata=ba4f7aa1ad74fffc -C extra-filename=-5c6e6e55fb55c39f --out-dir /Users/sachin/Downloads/LFX25/islet/out/aarch64-apple-darwin/debug/deps --target aarch64-apple-darwin -C incremental=/Users/sachin/Downloads/LFX25/islet/out/aarch64-apple-darwin/debug/incremental -L dependency=/Users/sachin/Downloads/LFX25/islet/out/aarch64-apple-darwin/debug/deps -L dependency=/Users/sachin/Downloads/LFX25/islet/out/debug/deps (exit status: 101)
warning: build failed, waiting for other jobs to finish...`
after running :
cargo build --target aarch64-apple-darwin
My setup :
islet % rustup show
Default host: aarch64-apple-darwin
rustup home:  /Users/sachin/.rustup
installed toolchains
stable-aarch64-apple-darwin (default)
nightly-2024-04-21-aarch64-apple-darwin
nightly-aarch64-apple-darwin
1.75.0-aarch64-apple-darwin
1.70-aarch64-apple-darwin
installed targets for active toolchain
aarch64-apple-darwin
aarch64-unknown-none-softfloat
wasm32-unknown-unknown
active toolchain
nightly-aarch64-apple-darwin (directory override for '/Users/sachin/downloads/islet')
rustc 1.85.0-nightly (c26db435b 2024-12-15)

I also want to work on this project, I liked the project and wish to contribute.

Hi @bokdeuk-jeong getting following error
error: could not compile rsi-test` (bin "rsi-test"); 1 warning emitted
Caused by: process didn't exit successfully: /Users/sachin/.rustup/toolchains/nightly-aarch64-apple-darwin/bin/rustc --crate-name rsi_test --edition=2021 realm/rsi-test/src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=107 --crate-type bin --emit=dep-info,link -C panic=abort -C embed-bitcode=no -C debuginfo=2 -C split-debuginfo=unpacked --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(feature, values())' -C metadata=ba4f7aa1ad74fffc -C extra-filename=-5c6e6e55fb55c39f --out-dir /Users/sachin/Downloads/LFX25/islet/out/aarch64-apple-darwin/debug/deps --target aarch64-apple-darwin -C incremental=/Users/sachin/Downloads/LFX25/islet/out/aarch64-apple-darwin/debug/incremental -L dependency=/Users/sachin/Downloads/LFX25/islet/out/aarch64-apple-darwin/debug/deps -L dependency=/Users/sachin/Downloads/LFX25/islet/out/debug/deps (exit status: 101) warning: build failed, waiting for other jobs to finish...`
after running :
cargo build --target aarch64-apple-darwin
My setup :
islet % rustup show
Default host: aarch64-apple-darwin rustup home: /Users/sachin/.rustup
installed toolchains
stable-aarch64-apple-darwin (default) nightly-2024-04-21-aarch64-apple-darwin nightly-aarch64-apple-darwin 1.75.0-aarch64-apple-darwin 1.70-aarch64-apple-darwin
installed targets for active toolchain
aarch64-apple-darwin aarch64-unknown-none-softfloat wasm32-unknown-unknown
active toolchain
nightly-aarch64-apple-darwin (directory override for '/Users/sachin/downloads/islet') rustc 1.85.0-nightly (c26db435b 2024-12-15)

First, thank you for your interest in our project.
Since rsi-test operates as a Realm, it must be built for the aarch64-unknown-linux-gnu target. Please refer to the Makefile
Additionally, the current tests are conducted in a Linux environment. If you are using a Mac, I recommend using a VM or Docker to test in a Linux environment. The way to setup the development on linux is here.
Furthermore, it might be easier to approach the following tests before working on rsi-test:

Crates Test: Test cases for RMM functionality that can run in the std environment: scripts/tests/crates.sh
MIRI Test: Tests executed using the MIRI tool: scripts/tests/miri.sh
ACS Test: Comprehensive tests for RMM’s RMI and RSI functionalities: scripts/tests/acs.sh

Hi @Harsh1s,
Thank you so much for expressing interest in the Islet project! We're especially excited to hear from someone with strong exprience in Rust and system testing.
To formally apply, please submit your application through the official mentorship program platfrom at https://mentorship.lfx.linuxfoundation.org/project/fbd406ee-5d76-4d8b-939d-c37d42643fa8. This ensures that all applicants are properly tracked and reviewed as part of the program.
Looking forward to seeing your application there! Feel free to reach out if you have any questions about the process.

Hi @bokdeuk-jeong, @bitboom

I have a quick suggestion for a problem with setting up the project! while running ./scripts/init.sh inside Ubuntu 24, it's failing to run the pip3 install toml command(/scripts/deps/pkgs.sh) due to the error externally-managed-environment
this error arises particularly in ubuntu(or newer debian based distros), as new changes were introduced to prevent conflicts between system-managed and user-managed python packages. This link contains the detail about the changes
to integrate the project further in future, I think it's necessary to prevent conflicts between globally managed and user managed python packages
To solve this problem, currently I am using python env for creating a temporary environment for toml, and put venv folder inside the .gitignore
Please suggest your views on this issue! If my method looks good for this problem, then I can go ahead and create a pr for review! But I am not sure whether using another environment for a dependency is a good idea or not!

Hi @drvcodenta,
Thank you for bringing this to our attention. Creating a virtual environment for this seems like a good idea. Could you please prepare a PR for that? Please don't forget to sign off your commits.


v0.7.0_32: Slider ball remained behind from its original place by changing the orientation

SEVERITY: Major
MODULE:

Pop By Age Chart
Line Chart
Mountain Chart
Bar Chart

PLATFORM:

Windows 7 / Chrome 45.0
Windows 7 / Firefox 41.0
MAC / Safari 8.0
iPad Air 2 iOS(8.3) / Safari 8.0
Nexus 9 (5.0.1) / Chrome 45.0

RELEASE: v0.7.0
STEPS TO REPRODUCE:

Navigate to URL: http://static.gapminderdev.org/vizabi/release/v0.7.0/preview/popbyage.html
Pop By Age chart page will be loaded
Click play from the start
Note the position of the slider ball
Click the full screen button under RESPONSIVENESS
Chart is switched to full screen
Note that the slider ball remained behind from its original place by changing the orientation

ACTUAL RESULTS:
Slider ball remained behind from its original place by changing the orientation from Portrait to full screen. When we click play after switching to full screen, the slider ball move quickly to attain its original place, after reaching it the slider ball moves normally
EXPECTED RESULTS:
Slider ball should have same place after changing its view
SCREENSHOT:

Retest Result: Fail
Release: v0.8.4
Testing Environment: http://static.gapminderdev.org/vizabi/release/v0.8.4/preview/bubblechart.html

@dab2000 closed this in dd2b82a a minute ago

@angieskazka
This issue is reproducing on v0.9.1 (Bubble Map Chart)
But it is not reproducing consistently.
Module: Bubble Map Chart
Platform: MAC / Safari 9.0
Testing Environment: http://static.gapminderdev.org/vizabi/release/v0.9.1/preview/bubblemap.html

@k6Labz please retest on develop, i've attempted a fix

Retest Result: Pass
Module:

Bubble Map Chart
Bar Chart

Platform: MAC / Safari 9.0
Testing Environment: http://static.gapminderdev.org/vizabi/develop/preview/bubblemap.html


Add requirements.txt file

Add a pip requirements.txt file to allow non-Anaconda users to easily
configure their environment for the notebooks in this repo. This file
will tell pip to install the exact same packages as in the current
environment.yml file. It is worth noting that PyTables is pytables
in Anaconda but simply tables in PyPI.
This has been tested on Python 3.7.4 on a clean install of Debian
Buster, and is not guaranteed to work on all platforms. Specifically,
this does require tools such as GCC to be installed on your machine. One
other caveat is that the specific versions of the packages may not be
synchronized on PyPI and Anaconda, so future updates to these packages
may cause the environment install to break on one platform and not the
other.

Thank you!


Typo "minItems" ducplicates in schema array options

Hi!
I have found two "minItems" in options of Json.Configuration.Array
But the second one should be "maxItems"
Please, fix this typo on your site https://jsonschema.net/#/
Attaching screenshot

Thank you and have a nice day!

Thanks for taking the time report this. I've just fixed this typo, and it will be visible in the next update (end of Jan 2019).

Hi. Great news, thank you. I am sure, that this fix will save time for others.

This is fixed in the new version now generally available; www.jsonschema.net


Capture points in Mercenary Domination mode will use inconsistent team colors on their cap point model.

For example, if a BLU player caps a control point, while the hologram and HUD will always accurately reflect the point's owner, the model of the capture zone is not guaranteed to turn blue, and will randomly turn either neutral or red with no consistency.
(My best guess is this could have something to do with the addition of Merc team and an oversight with how cap points work?)

map issue, not a code issue

map issue, not a code issue

No, these are copied directly from cp_granary, and should work the same way. If a Valve map's own control points don't behave properly when taken wholesale, there is definitely something wrong in the code.

mdom_noonflow_dev

cp_granny
map issue, not code issue


Can we give Click function for image inside the card?

Hi,
I'm trying to add some buttons inside the card with some click functions to those buttons but click function it is not firing..

Add position: relative and z-index: 1 to the button styles

z-index: 1 solved the problem. Thanks


Extra newline at the end of sent Slack messages

When I send a Slack message using matterircd, other users see an extra newline at its end.
On the web client, this shows up as a bit of extra space between lines compared to other users. In clients like the weechat slack plugin, it shows up as an extra newline proper at the end of each message.

Last time I briefly took a look at this it seemed to be an empty "attachment" payload for every message.
I guess the Slack side of things isn't getting that much use, except for us few who found this and use it as a replacement for the gone gateway.

Yes, this is "almost" empty attachment is necessary so that messages don't get looped.
This is used to detect the messages we've sent ourselves.
See #158

Thanks for the explanation, but I don't understand entirely.
Could you explain why it's necessary to determine "if the message originated from matterbridge, or from another bot" (42wim/matterbridge/#262#issuecomment-330369260), and how empty attachments are used to achieve that?

It's an "almost" empty attachment. See also https://github.com/42wim/matterbridge/issues/219 and https://github.com/42wim/matterbridge/commit/dc8743e0c0f40d6f260c346025af29523087a9b5#diff-9cf086abe9322e8e54948ce48e302166R162
I'm adding a callback-id matterbridge to every message.  (this has more recently changed to a more unique callback-id though to support multiple matterircd users)

Going to close this as, it's not something I can fix.

Could you explain why it's necessary to add this callback-id attachment to every message? What makes it impossible to recognize bridge-sent messages being echoed based on content?

Without callback: You on matterircd send a message. Message gets to slack. Slack echos message back to every client. You see the message double on matterircd.
With callback: You on matterircd send a message. Message gets to slack. Slack echos message back to every client. Matterircd sees callback message and doesn't show it again


[flutter_releases] Flutter stable 3.3.3 Framework Cherrypicks

Flutter stable 3.3.3 Framework
Scheduled Cherrypicks

Ack'ing that Mac tool_host_cross_arch_tests is stuck. It was changed to Mac_x64 and Mac_arm on tip of tree.


Selecting an address using a keyboard.

We recently conducted user testing on one of our websites and encountered an issue that appears to affect the accessibility of the select component. During form navigation, some test users utilized the 'tab' key to move from one element to another. However, when they attempted to select their address from the Lob autocomplete, they were unable to tab to the address option they wanted to use. Instead, they were redirected from our site to the Lob website. (See gif below)
After researching the code-base, I found intentional window location changes. Is there any way to prevent redirection? The redirect happens within the handleChange function which is used in the onChange event.
Based on the comments, it seems that the onChange event is intentionally defined after the user has supplied properties to avoid any unintended damage to the functionality. Is there a way to configure the component so that users can select their address using their keyboard?

I also observed this when typing in an address and hitting enter, assuming it would select the first address autocomplete result. Instead it redirects to the LOB marketing page.


Memory usage related benchmarks

While checking out the asv documentation I noticed that it also supports different sorts of benchmarks (more precisely, memory-related stuff). In the past, we've seen some memory-related issues and tried to resolve them and benchmark the usages manually (e.g checking the memory usage every 2 seconds and preparing a graph), e.g https://github.com/iterative/dvc/issues/4139. But I think it might be nice if we also start writing some memory benchmarks (especially for push/pull and maybe even import-url --to-remote to guarantee that is not trying to load everything into memory). I didn't particularly test the memory usages while I was migrating to fsspec so there might be stuff that we might notice due to those changes too (maybe dir cache is wasting a lot of memory? or there is a subtle bug in the chunked read etc).
CC: @pared @efiop
https://asv.readthedocs.io/en/stable/benchmarks.html

@isidentical we have an issue for that:
https://github.com/iterative/dvc-bench/issues/129
closing in favour of that one :)

Ah, great!


Specify num_replicas and rank when creating sampler

Addressing issue #99. If mpu is provided to deepspeed.initialize(), then pass on the world size and rank information to DistributedSampler to ensure multiple processes will load the appropriate subset of the original dataset.

Thanks @vidushv! This looks good. I'll merge after the tests pass.


Global variables

Is there a way to input global variables before the run?

This is affecting me also. I do not see how to use my globals.

same issue here, any updates on this?


Use Either for error handling

We already export an Either type, which can be reused by clients of this library.

I guess the goal is to delete the corresponding class from lightning-kmp when we update it to use this version of bitcoin-kmp, right? In that case we should also import the Try implementation, this way we remove it as well from lightning-kmp, otherwise it would be weird to keep one in lightning-kmp and the other in bitcoin-kmp?

Done in https://github.com/ACINQ/bitcoin-kmp/pull/115/commits/7af325c26edf35a30d7fb2c8bd117d337c8d092b, though I believe that we may not need it: API methods in lightning-kmp should use Either, and internal methods could just use kotlin's built-in Result type

Done in https://github.com/ACINQ/bitcoin-kmp/commit/7af325c26edf35a30d7fb2c8bd117d337c8d092b, though I believe that we may not need it: API methods in lightning-kmp should use Either, and internal methods could just use kotlin's built-in Result type

I agree with that, but inside lightning-kmp we do use Try in a few places, and it will be cleaner to use the one exported by bitcoin-kmp. Then maybe we can stop using Try altogether from ligthning-kmp if it doesn't make sense, but we can do that in a next step, no need to do it right now!

LGTM, I believe we can revert the version change and merge this 👍

done in https://github.com/ACINQ/bitcoin-kmp/pull/115/commits/e3ba13542eb42a7e93c2ca572767967179955986


Introduce a Submission class for submitted works.

Replace the use of too many lambdas (difficult to debug and profile)
with an abstract submission class.

Hi @diesalbla,
Thank you for your contribution! We really value the time you've taken to put this together.
Before we proceed with reviewing this pull request, please sign the Lightbend Contributors License Agreement:
http://www.lightbend.com/contribute/cla