WIP: Add support for RTL8812EU-based Wi-Fi adapters for FPV firmware

Hi.
The Chinese Wi-Fi module vendor LB-LINK had recently released a high-power Wi-Fi module BL-M8812EU2 based on RTL8812EU chipset costs only ~$10 (68 CNY). Here's the product page and the purchase link. The FEM chip inside is KCT8528HE, with an impressive +29dBm (802.11g, 6Mbps, -9dB EVM) PA output and a +15.5dB (NF=1.7dB) LNA.
I bought two a few weeks ago, and the tech support from LB-LINK send me a driver tar from Realtek. It seems that the chip is gonna be the replacement of RTL8812AU which has been marked as EOL. The original driver does not support packet injection with correct rate or MCS index, so I tried to merge the "injection patch" from svpcom/rtl8812au to this driver, which can be found at here.
The progress now is that the driver build good on kernel 6.5, 802.11g/n packets can be sent at the correct rate/MCS using my own packet injecting tool, and video transmission using wfb_tx and wfb_rx in my two virtual machines (see here in youtube). The OpenIPC package makefile is avaliable at here.
The vendor also claimed that RTL8812EU supports 10MHz bandwidth, but there's no document and I don't know how to use it. The driver contains a firmware which seems to be the "10MHz firmware", but I don't have a ~6GHz spectrum analyzer either so I can't tell if it's really working -- It would be great if anyone could help.
I'm choosing to post it here now because this driver definitely needs more integration testing. If someone is also interested in this module, he can just start from here and does not need to patch the driver or write Makefile again.
Of course I'll open a pull request when it becomes somehow usable and stable.

@libc0607 Seems like nobody cares about Windows when it comes to WifiBroadcasting... Will it somehow be possible to make a Windows Driver also? Would love to try it out and recieve WifiBroadcasting to OBS Studio

Theoretically it's possible but I don't think anybody gonna do it. It requires a lot of work and also support from Realtek which is obviously impossible.
You can try using an NVR (e.g. see Hi3536DV100 configs in this repo; or anything similar) as a video stream forwarder. It will act as an "abstraction layer" in the system that converts different Wi-Fi adaptors to standard ethernet UDP packets and then send them to ur Windows PC via a RJ45 connector.

@libc0607 Seems like nobody cares about Windows when it comes to WifiBroadcasting... Will it somehow be possible to make a Windows Driver also? Would love to try it out and recieve WifiBroadcasting to OBS Studio

There is such driver https://github.com/buldo/WiFiDriver, but you're right that nobody cares about Windows for a long time

@libc0607 Is it possible to buy it on aliexpress? Are any other cards with this chipset exists on the market?

@libc0607 Seems like nobody cares about Windows when it comes to WifiBroadcasting... Will it somehow be possible to make a Windows Driver also? Would love to try it out and recieve WifiBroadcasting to OBS Studio

There is such driver https://github.com/buldo/WiFiDriver, but you're right that nobody cares about Windows for a long time

Thanks... Do you know how to get it work with OpenIPC, and how to access the Streaming on a Windows PC?

None of OpenIPC's devs are using Windows now

@libc0607 Is it possible to buy it on aliexpress?

I thought there would be, but I couldn't find any after I registered. Maybe you can ask some of the BL-R8812AF1 sellers since the modules are from same vendor.
And I'm gonna ask their product manager tomorrow if he knows there's any reseller outside mainland China.

Are any other cards with this chipset exists on the market?

I'm afraid not. No search results in zh-cn internet either.

None of OpenIPC's devs are using Windows now

So my best shoot will be to ask @buldo, or what do you think?

My point is that I want to invest my time only to products that are available on mass market.
It is possible to add injection to most of SoftMAC drivers, but hardware should be easy to buy and it should not be EOL at least for 5 years. Also it will be very good if vendor provides docs for internal card registers (like atheros done for ath9k). Without these specs it is very hard to add features needed for injection (for example: disabling acks, use rts/cts packet, disabling csma/ca, extended channel monitoring for noise and others)

@libc0607 Is it possible to buy it on aliexpress?

I thought there would be, but I couldn't find any after I registered. Maybe you can ask some of the BL-R8812AF1 sellers since the modules are from same vendor. And I'm gonna ask their product manager tomorrow if he knows there's any reseller outside mainland China.

Are any other cards with this chipset exists on the market?

I'm afraid not. No search results in zh-cn internet either.

@libc0607 if you want to receive on windows there are much better ways than my driver:

Use dedicated sbc for RX. Connect this sbc to windows via ethernet. Even $5 milk-v is enough.
Use WSL with custom kernel and usb-ip pass-through. It enough to receive video stream.

@libc0607 Seems like nobody cares about Windows when it comes to WifiBroadcasting... Will it somehow be possible to make a Windows Driver also? Would love to try it out and recieve WifiBroadcasting to OBS Studio

Theoretically it's possible but I don't think anybody gonna do it. It requires a lot of work and also support from Realtek which is obviously impossible.
You can try using an NVR (e.g. see Hi3536DV100 configs in this repo; or anything similar) as a video stream forwarder. It will act as an "abstraction layer" in the system that converts different Wi-Fi adaptors to standard ethernet UDP packets and then send them to ur Windows PC via a RJ45 connector.

If using the NVR will I then need one NVR for each stream I like to recieve, or is it possible to recieve multiple streams on one NVR?

@libc0607 Could you upload datasheet for RTL8812EU here?

@libc0607 Could you upload datasheet for RTL8812EU here?

BL-M8812EU2 (the module) datasheet:
BL-M8812EU2_datasheet_V<IP_ADDRESS>_231027(70003939).pdf
There's no RTL8812EU-CG chip datasheet (at least for now).
It's fairly new and the module has been selling in China for only 2 months ... leakers need some time XD

If using the NVR will I then need one NVR for each stream I like to recieve, or is it possible to recieve multiple streams on one NVR?

Maybe you can try multiple Wi-Fi adaptors on one NVR?

@libc0607 if you want to receive on windows there are much better ways than my driver:

Use dedicated sbc for RX. Connect this sbc to windows via ethernet. Even $5 milk-v is enough.
Use WSL with custom kernel and usb-ip pass-through. It enough to receive video stream.

But with your driver you will get lowest latency cause you cut out one lead, or am I wrong?
Would prefer to use as clean setup as possible.
Also do you know if it is possible to recieve multiple broadcasting with only one receiver, or do I need one receiver for  each sender?
If using WSL is it then possible to push the signal to a Windows OBS Studio?

Driver update:
The TX power setting of RTL8812EU is working. The total power consumption of the adaptor came to ~10W (5V/2.0A).
Just quickly went through the code and I found that the setting is a bit different compared with RTL8812AU.
Simply add rtw_tx_pwr_by_rate=0 rtw_tx_pwr_lmt_enable=0 when insmod,
then the TX power can be directly set by iw dev wlan0 set txpower fixed <mBm>.
The range of  is 0~3150, which equals 50 times driver_txpower_override.
Another update is about regulation. Add rtw_regd_src=1 when insmod and the phy won't claim it's "self-managed", then you can use the channel you want.

here an 8812eu driver with monitor mode and injection: https://github.com/hwanggz0/rtl8812eu/

then the TX power can be directly set by iw dev wlan0 set txpower fixed <mBm>.
The range of is 0~3150, which equals 50 times driver_txpower_override.

There are two ways to set TX power.
- ```driver_txpower_override``` in ```/etc/wfb.conf```. The range is ```0~63```
- ```iw dev <wlan0> set txpower fixed <mBm>```. The range is ```0~3150```, and can be set dynamically when transmitting.

Hi @libc0607 Where did you get those numbers 0~63 0~3150, I didn't find in the spec(BL-M8812EU2_datasheet_V<IP_ADDRESS>_231027(70003939).pdf) you provided.?

Hi @libc0607 Where did you get those numbers 0~63 0~3150, I didn't find in the spec(BL-M8812EU2_datasheet_V<IP_ADDRESS>_231027(70003939).pdf) you provided.?

It's an internal value in the driver.
In most situations, the user does not need to consider the value -- TX power is calibrated by LB-LINK and then written into eFuse. But we override that (to unlock a bit).

@libc0607 Does I mean right that using iw dev <wlan0> set txpower fixed <mBm> is more preferred than driver_txpower_override because it abstract from card internals and operate real power values? Or this mBm value is also not real tx power value?

@libc0607 Do I mean right that using iw dev <wlan0> set txpower fixed <mBm> is more preferred than driver_txpower_override because it abstract from card internals and operate real power values? Or this mBm value is also not real tx power value?

Both driver_txpower_override and mBm are not real dBm values.
In OpenIPC, if set txpower by driver_txpower_override, it will be converted to <mBm> (multiplied by 50). It was some ... backward compatible solution, to avoid adding the third txpower setting in /etc/wfb.conf to confuse users. (
The default eFuse value (table) is calibrated by LB-LINK to match the real dBm power in the module datasheet. (The values even differ in different center frequencies.) That's the only connection to the real world...
For example, I know someone tested RTL8812CU output:
https://github.com/JasonFreeLab/rtl8812cu?tab=readme-ov-file#ant0_5825mhz_20m_11n_mcs1_mbm1700

@libc0607 Is it possible to add some module parameter to the driver to extract these calibration values? Maybe it can help to solve 40MHz injection problem

@libc0607 Is it possible to add some module parameter to the driver to extract these calibration values? Maybe it can help to solve 40MHz injection problem

If I understand it correctly, the txpower table can be read out by cat /proc/net/rtl88x2eu/wlan0/txpwr_total_dbm (after insmod, before any iw set txpower).
iw wlan0 set txpower fixed <mBm> will just overwrite all values in the table.
And iw wlan0 info shows the biggest value in this table.

In most situations, the user does not need to consider the value -- TX power is calibrated by LB-LINK and then written into eFuse.

If I understand it correctly, the default txpower table can be read out by cat /proc/net/rtl88x2eu/wlan0/txpwr_total_dbm (after insmod, before any iw set txpower).

I have 8812AU wifi card, just plugin, wfb-ng not started.
There is no such /proc/net/rtl88x2... dir. And I'm sure the driver is loaded, which can tell from dmesg and lsmod | grep 88XXau_wfb.
The reason I previously asked this question was to better understand and obtain manufacturer-calibrated data, which might be more linear or make it easier to comprehend the adaptive link's profile configuration table.

I have 8812AU wifi card, just plugin, wfb-ng not started. There is no such /proc/net/rtl88x2... dir. And I'm sure the driver is loaded, which can tell from dmesg and lsmod | grep 88XXau_wfb.
The reason I previously asked this question was to better understand and obtain manufacturer-calibrated data, which might be more linear or make it easier to comprehend the adaptive link's profile configuration table.

The current 8812au driver is based on Realtek driver v5.2.20. Realtek had not implemented /proc debug APIs at that time. (
Maybe you can read the eFuse and find the value? There are some documents about 8812au efuse in svpcom's 8812au repo.
As for TX power backoff -- there are some empirical values for different MCS indexes, e.g. -3dB from P1dB for MCS0, and -8dB for MCS7

I got this from 8812EU just right after modprobe.  Right now, I don't have any idea about these numbers.
@libc0607 How to understand the relationship between the parameters and the command iw dev <wlan0> set txpower fixed <mBm>?

mBm: 0 ~ 3150

# cat /proc/net/rtl88x2eu/wlan0/txpwr_total_dbm
antenna_gain:     0
20MHz, cch20:0
rate         target = min((byr    + btc    + extra ), rlmt  , lmt   , ulmt  ) + tpc
   CCK_1M 1T     18 =    ((    18        0        0),     NA,     NA,     NA)        0
   CCK_2M 1T     18 =    ((    18        0        0),     NA,     NA,     NA)        0
  CCK5_5M 1T     18 =    ((    18        0        0),     NA,     NA,     NA)        0
  CCK_11M 1T     18 =    ((    18        0        0),     NA,     NA,     NA)        0
  OFDM_6M 1T     17 =    ((    17        0        0),     NA,     NA,     NA)        0
  OFDM_9M 1T     17 =    ((    17        0        0),     NA,     NA,     NA)        0
 OFDM_12M 1T     17 =    ((    17        0        0),     NA,     NA,     NA)        0
 OFDM_18M 1T     17 =    ((    17        0        0),     NA,     NA,     NA)        0
 OFDM_24M 1T     17 =    ((    17        0        0),     NA,     NA,     NA)        0
 OFDM_36M 1T     17 =    ((    17        0        0),     NA,     NA,     NA)        0
 OFDM_48M 1T     17 =    ((    17        0        0),     NA,     NA,     NA)        0
 OFDM_54M 1T     17 =    ((    17        0        0),     NA,     NA,     NA)        0
     MCS0 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
     MCS1 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
     MCS2 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
     MCS3 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
     MCS4 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
     MCS5 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
     MCS6 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
     MCS7 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
     MCS8 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
     MCS9 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
    MCS10 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
    MCS11 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
    MCS12 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
    MCS13 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
    MCS14 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
    MCS15 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT1SMCS0 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS1 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS2 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS3 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS4 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS5 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS6 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS7 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS8 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT1SMCS9 1T     16 =    ((    16        0        0),     NA,     NA,     NA)        0
VHT2SMCS0 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS1 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS2 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS3 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS4 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS5 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS6 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS7 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS8 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0
VHT2SMCS9 2T  19.01 =    (( 19.01        0        0),     NA,     NA,     NA)        0

I got this from 8812EU just right after modprobe. Right now, I don't have any idea about these numbers.
@libc0607 How to understand the relationship between the parameters and the command iw dev <wlan0> set txpower fixed <mBm>?

The chipset needs a table to find the corresponding TX power index for different modulations (CCK/OFDM, MCS index, VHT NSS, etc.) because of the difference in the Peak-to-Average Power Ratio (PAPR).
The first column equals  you set divided by 100. So, the second table shows that driver_txpower_override in /etc/wfb.conf is 50.

EDIT2: I'm very interested in RTL8812CU output, which gaves freq/bandwidth/modulation/mbm/evm https://github.com/JasonFreeLab/rtl8812cu?tab=readme-ov-file#ant0_5825mhz_20m_11n_mcs1_mbm1700
Is there any 8812 EU test output, like RTL8812CU?

... Don't know. I'm also curious about that, will keep focusing.
The Chinese fork of PixelPilot "DigitalFPV牛逼版" gives RX EVM on OSD, which can be used to evaluate PA saturation.
(BTW I've heard that the RunCam tested the RTL8812EU before selling their WiFiLink, but they recommended txpower=58, which will definitely cause PA saturation and TX deterioration. So I'm not trusting that)


feat: add the ability to run keybinds when pressing enter instead of going to definition

Hey, I was just looking how to execute the keybinds on enter instead of going to keybinds definition and I saw #7 but I thought it would be cool to have it in upstream.
Introduced a new option for the setup called action_on_enter (and documented it, as it should be) and if its value is "execute" then it will append a new attach_mappings function for the options passed in mapper function.

All the credits of the attach_mappings function goes to issadarkthing, who shared it in the mentioned issue.

Thanks ! 😋


use caching artifactory

https://scala-ci.typesafe.com/job/scala-2.12.x-integrate-community-build/376/console


How to add and modify IP -> Pool

Hi..
How to add and modify IP Pool with values:

name
addresses

I have tried like this:
@Test
public void addIpPool() throws MikrotikApiException {
	final MikroTikIPPool upIpPool = new MikroTikIPPool();
	upIpPool.setAddresses("<IP_ADDRESS>-<IP_ADDRESS>");
	upIpPool.setName("ipp_ri1");

	final List<Map<String, String>> result = conn.
			execute(String.format("/ip/pool/add name=\"%s\" addresses=\"%s\"",
					upIpPool.getName(), upIpPool.getAddresses()));
}

It is not works..

Do you receive an error message? If so, can you please show me the stack trace?
Gideon

On 12 Jul 2016, at 06:12, Rudi Wijaya<EMAIL_ADDRESS>wrote:
Hi..
How to add and modify IP Pool with values:
name
addresses
I have tried like this:
@Test
public void addIpPool() throws MikrotikApiException {
final MikroTikIPPool upIpPool = new MikroTikIPPool();
upIpPool.setAddresses("<IP_ADDRESS>-<IP_ADDRESS>");
upIpPool.setName("ipp_ri1");
final List<Map<String, String>> result = conn.
        execute(String.format("/ip/pool/add name=\"%s\" addresses=\"%s\"",
                upIpPool.getName(), upIpPool.getAddresses()));

}
It is not works..
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/GideonLeGrange/mikrotik-java/issues/41, or mute the thread https://github.com/notifications/unsubscribe/ABFCFOxEMt78m4TEP8ifhOTKsD8IGL5Aks5qUxQ2gaJpZM4JKBTj.

Your command is wrong: addresses is not a parameter for /ip/pool/add, the correct parameter is ranges.
Command line example:
 /ip pool add name="pool1" ranges="<IP_ADDRESS>-<IP_ADDRESS>"
`
API example:
 final List<Map<String, String>> result = con.             execute(String.format("/ip/pool/add name=\"%s\" ranges=\"%s\"",                     "pool21, "<IP_ADDRESS>-<IP_ADDRESS>"));

Thanks @GideonLeGrange, I will try soon..


Added possibility to add original Identity metadata to XProduct result items

Added possibility to add original Identity metadata to XProduct result items.
Hope you like it!

Great, thanks! Is there any release date for the next updated NuGet package? Would be nice to know, when we can expect the feature approx. ;-)

eta a few days


SecurityTokenHandlerCollectionExtensions question

I'm trying to update my asp.net core wsfed library with the new 5.2 nightlies. There used to be a library called Microsoft.IdentityModel.Protocol.Extensions, but I'm guessing based off the new changes that this is going away. Has SecurityTokenHandlerCollectionExtensions been moved or something else taken it's place?

@chrisdrobison M.IM.ProtocolExtensions was a collection of types that were needed for wrapping S.IM and providing OIDC support for Katana. Yes, we did drop the "SecurityTokenHandlerCollectionExtensions and moved the types into well defined assemblies. M.IM.Tokens, M.IM.Token.Saml, etc.
There is an update to Katana that will work with 5.2.0 being planned. Release date is not finalized yet.


In c_example_soem, when running the from-file-modulation sample first, the output does not stop after finishing.

When running the from-file-modulation sample after other examples, the output will stop correctly after finishing.
Also, when running the other sample first, the output will stop correctly after finishing.

msg_id might be the same?


Is it possible to have empty value for collection/list item?

Output of helm version: v3.3.1
Output of kubectl version: v1.18.5
Cloud Provider/Platform (AKS, GKE, Minikube etc.): local
Hi helmer:
I just encounter a problem with writing helm script.
What I trying to do is define a collection of item as follow, and for the value of each entry, it is referencing a yaml file from the template folder:
configMaps:

map1:
map2:
map3:

However, the problem is if I leave empty value for map1 to map3, the deployment would failed with this error:
"
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: [ValidationError(Deployment.spec.template.spec.containers[0].volumeMounts[2]): missing required field "name" in io.k8s.api.core.v1.VolumeMount, ValidationError(Deployment.spec.template.spec.volumes[2]): missing required field "name" in io.k8s.api.core.v1.Volume]
"
As a work around, I have to provide default value for map1 to map3.
So my question is, is it possible to have empty value for map1 to map3? if yes, how can i do it?
Thank you very much for your assistant, and I wish you all a good day.

@gyang1129 That's a good question. Let me first say, that this error isn't something to do with Helm but rather something to do with Kubernetes.
Helm is validating the generated YAML against the Kubernetes API. Kubernetes supplies an OpenAPI schema that can be validated against. The error you're seeing is because the generated YAML from the templates is invalid per Kubernetes. If you manually generated the same YAML and tried to upload it to Kubernetes using kubectl you should see a similar error for the same issue.
Without seeing more of your templates I can't come up with a suggestion for how you can proceed. Is that something you can share?

@gyang1129 That's a good question. Let me first say, that this error isn't something to do with Helm but rather something to do with Kubernetes.
Helm is validating the generated YAML against the Kubernetes API. Kubernetes supplies an OpenAPI schema that can be validated against. The error you're seeing is because the generated YAML from the templates is invalid per Kubernetes. If you manually generated the same YAML and tried to upload it to Kubernetes using kubectl you should see a similar error for the same issue.
Without seeing more of your templates I can't come up with a suggestion for how you can proceed. Is that something you can share?

Hi,
Thanks for the reply, I am sorry that the script is not something I can share because it is internal.
I know exactly what goes wrong, it is the collection entry can't have empty value. But it worked if I provided default value.


Update to 1.4.2

@conda-forge-admin please rerender

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

ready to go! @conda-forge/gl2ps

Thank you very much @jschueller !


[Cocoon] AngularDart application is failing to build

To deploy v399, I worked around this by just commenting out the function to build the angular dart app. But right now it's failing.
Can we just remove the whole thing at this point? AFAIK it's not being used.
/cc @CaseyHillers @digiter @keyonghan

The performance dashboard is still using angular dart: https://github.com/flutter/flutter/issues/45276

What's the error message from building AngularDart part?

[SEVERE] build_web_compilers:sdk_js_copy on package:build_web_compilers/$lib$ (cached):

FileSystemException: Cannot open file, path = '/Users/dnfield/src/flutter/flutter/bin/cache/dart-sdk/lib/dev_compiler/amd/dart_sdk.js' (OS Error: No such file or directory, errno = 2)

In the past, I've been able to use the Flutter SDK's dart to do this - do I need Dart from elsewhere for it?
@jonahwilliams might know.

The fact that it worked with flutter's dart SDK was likely an accident. We don't test anything besides flutter web applications

That was the problem.

(I had to use a non-flutter dart sdk)


httpGet-inferred health probes inspect irrelevant pods (completed/terminated)

Describe the bug
Health probe inference looks at the "first pod", namely whatever pod is first in the namespace & service-selector filtered pod cache list: https://github.com/Azure/application-gateway-kubernetes-ingress/blob/80971d9a2654219c7ad40e506a7825289a607f97/pkg/k8scontext/context.go#L471
Unfortunately, this pod can be an irrelevant leftover from past deployments, typically a failed pod that was not garbage-collected (https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-garbage-collection
To Reproduce

Manually fail some pods matching a service, and keep them around (don't delete the failed/completed pods)
Change some probe-relevant property in the ingress of one of the relevant, running (non-failed) pods
Depending on the order of the cached pod list mentioned above, health probes will sometimes take the property from a failed pod

Proposed Solution

Filter out pods that are Completed/Terminated: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle
Prioritize pods that are Running, then Pending, then Unknown
Then Prioritize pods whose containers are all Running
Then prioritize pods by creation timestamp (newest first)

So basically something like:
podList.Where(pod => pod.State not in ["Completed", "Terminated"]).SortBy(pod => pod.State).SortBy(pod => pod.AllContainersRunning).SortBy(pod => pod.StartTime)[0]
Ingress Controller details
This is behavior present in the current code: https://github.com/Azure/application-gateway-kubernetes-ingress/blob/80971d9a2654219c7ad40e506a7825289a607f97/pkg/appgw/health_probes.go#L253

Seems to be the same issue.
You update the health probe of a deployment and you have some evicted pods from the old deployment. The ingress controller will update the ingress with the old health probes. This took some hours of me before examining the AGIC code to see where it takes the probe information from.
Our issue has been solved by removing the evicted or completed pods. But this should be fixed in the code.


ERR_PACKAGE_PATH_NOT_EXPORTED

Trying to install Saber fresh by following this page: https://saber.egoist.dev/docs/installation.html#prerequisites

Bug report
Steps to reproduce
By following the "Using the Generator" section on your installation page to install, I get errors. I tried this on both a Windows 10 machine and a Mac Pro with Ventura 13.4.  Everything during the install runs fine. Then I issue the npm run dev command and I get the following:
npm run dev

dev
saber

[info] Using config file: saber-config.yml
[info] Using theme: minima
[info] Using 2 plugins from config file
[error] Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './package' is not defined by "exports" in /Users/billuser/Projects/TestProjects/testSSR/my-site/node_modules/vue/package.json
at new NodeError (node:internal/errors:371:5)
at throwExportsNotFound (node:internal/modules/esm/resolve:453:9)
at packageExportsResolve (node:internal/modules/esm/resolve:731:3)
at resolveExports (node:internal/modules/cjs/loader:482:36)
at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
at Function.resolve (node:internal/modules/cjs/helpers:108:19)
at module.exports (/Users/billuser/Projects/TestProjects/testSSR/my-site/node_modules/saber/lib/webpack/webpack.config.js:44:26)
at Saber.getWebpackConfig (/Users/billuser/Projects/TestProjects/testSSR/my-site/node_modules/saber/lib/index.js:288:54)
at VueRenderer.getRequestHandler (/Users/billuser/Projects/TestProjects/testSSR/my-site/node_modules/saber/vue-renderer/lib/index.js:391:35)
Using node version 16.14.2, npm version 8.5.0
This is from my Mac. Windows gets the same error.

What is expected?
I expect it to work without the hassle of these errors.
What is actually happening?
This software appears not to work at all and introduces a bunch of high vulnerabilities
Other relevant information

Result of running saber -v:
I get "command not found"

Browser version (optional): Browser not used yet

Is Saber a global or local install? trying to install locally

Which package manager did you use for the install? npm 8.5.0

Does this issue occur when all plugins are disabled?
n/a

For anyone come with this issue, locking the vue version to 2.6.x (legacy) will bypass the exception.
package.json with yarn:
{
  // ...
  "resolutions": {
    "vue-server-renderer": "2.6.14",
    "vue-template-compiler": "2.6.14",
    "vue": "2.6.14"
  }
}

package.json with npm >= 8:
{
  // ...
  "overrides": {
    "vue-server-renderer": "2.6.14",
    "vue-template-compiler": "2.6.14",
    "vue": "2.6.14"
  }
}

Or, for saber, completing the filename suffix on this line will fix this issue:
  const ownModulesDir = path.join(
-    path.dirname(require.resolve('vue/package')),
+    path.dirname(require.resolve('vue/package.json')),
    '..'


⚠ ClamAV has degraded performance

In 05a6f27, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 225 ms

Resolved: ClamAV performance has improved in 50a74cb after 5 minutes.


Search returns incomplete results for "SPST"

Preflight Checklist

[X] I agree to follow the Code of Conduct that this project adheres to.
[X] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Describe the bug
Searching for DPDT brings up the correct electrical switch, searching for SPST doesn't find any results. However, when I manually expand the panels looking for the SPST, I find it, and it is named exactly as SPST. It is under "Electrical / Switches and Relays".
To Reproduce
Steps to reproduce the behavior:

Make sure that Elecritcal shapes are loaded.
Search for DPDT, note that the correct item is shown in the search results box.
Search for SPST, note that no items are found in the search results box.

Expected behavior
The item for SPST should show in the search results box like happens when searching for DPDT.
draw.io version (In the Help->About menu of the draw.io editor):

14.4.4

Desktop (please complete the following information):

Windows 10
Firefox
92.0.1

Thanks for the report. This will be fixed in the next release.


Ambiq add connector apollo4p evb

boards: arm: apollo4p_evb
Generic Connector for the apollo4p_evb
Ran tests/drivers/gpio/gpio_basic_api
Ambiq does not support DUAL Edged Interrupts.
Signed-off-by: Richard Wheatley<EMAIL_ADDRESS>

The implementation looks good to me. Actually, I enabled this header in apollo4p_blue_kxr_evb before and knew it worked basically. One comment is the "ambiq,header" description mentions the binding is only for Apollo4p EVB. If the headers of apollo4_evb, apollo4p_blue_kxr_evb and more EVB are the same, we should make the description more generic. Then the boards can share this same connector.

The EVB connector now has definitions from the am_bsp_pins.h file for the paollo4p_evb.
You may wish to copy this and relabel the pins for the KXR board.


Make sure that both bundles are in the same app group

This is the message I see for logging in for the first time:

Probably a result of recent CI changes to self-sign applications.

@roop Perhaps this would be a good candidate for our first unit test. Could run on a macos-12 runner.

@AndrewDryga Unfortunately it won't be possible for us to test on macos-12 without access to a live machine. I managed to setup a local macos-12 vm, but VMs aren't eligible for Apple ID signins, and therefore Test Flight installs:

You might have to be our macOS 12 guinea pig for the time being :-).
After #2333 is merged, could you do the following test to see if this is still an issue?

Drag Firezone.app to trash and empty
Remove group container folder: sudo rm -rf ~/Library/Group\ Containers/47R2M6779T.group.dev.firezone.firezone
Create a new user account on your Mac
Log in, set up Test Flight in this new user account
Install the latest Firezone beta and perform the same test

@bmanifold has confirmed it's not an issue for macOS-13. Seems to be an issue for Andrew / macOS-12 only, deprioritizing for now.

@AndrewDryga To start with a clean slate, please also do these:

Open System Settings > VPN, and remove any VPNs with name starting as "Firezone" (click on the (i) to see the "Remove configuration" button)
Open Keychain Access, and remove any keychain items named "Firezone Access Token"

@roop We managed to reproduce this reliably.
This console.app log message occurs when the app starts and checks for the token:
error:[-34018] Error Domain=NSOSStatusErrorDomain Code=-34018 "Client has neither com.apple.application-identifier nor com.apple.security.application-groups nor keychain-access-groups entitlements" UserInfo={numberOfErrorsDeep=0, NSDescription=Client has neither com.apple.application-identifier nor com.apple.security.application-groups nor keychain-access-groups entitlements}

It looks like maybe macOS 12 needs another entitlement defined?

macos-12 support not planned in the near future.

Fixed with the keychain-tunnel refactor


Base properties not supported?

In Swagger v2 you can specify some base parameters like the path, consumes, produces, ... . For example:
host: localhost
schemes:
  - http
basePath: /api
consumes:
  - application/json
produces:
  - application/json

I'm using these in my Swagger YAML definition, however, it seems that neither of these parameters is supported, because the basePath is being ignored and since I didn't define the consumes or produces parameter in the paths themself (because they're already defined as a base parameter), my test fails because it expects null.

Hi,
indeed it is not supported yet. A PR is welcome. I dont have much time because I'm at parental leave.

If you like the idea of asserj-swagger, I would love to get your GitHub Star.

Why was this closed? You can't seriously assert the validity of paths and ignore basePath.

It does not compare Swagger objects like info, descriptions or summaries

That's fine and I don't think that's expected here. Except for title and version the fields of the info object are optional anyhow. None of them have a functional impact on how the API behaves - very much in contrast to basePath.
So, if I have an OpenAPI definition like so
...
basePath: /broker-monitor/v1
paths:
  /failure-messages:
...

and a Spring controller like so
...
@RequestMapping(value = "/broker-monitor/v1", produces = MediaType.APPLICATION_JSON_VALUE)
public interface BrokerMonitorApi {
    @GetMapping("/failure-messages")
...

Then you would expect that assertj-swagger considers this to be valid. Currently, however, I get something like this
1) [Checking Paths]
Expecting:
 <[...
    "/broker-monitor/v1/failure-messages",
    ...]>
to contain:
 <["/failure-messages"]>
but could not find:
 <["/failure-messages"]>

Hi,
I can't remember why it was closed :(
I don't use assertj-swagger anymore, but I still merge PRs and release new versions. If it's still not working, please create a PR and I merge it.

To me, it didn't matter if the issue was closed. It was more a question to make sure I wasn't forgetting something on my end, rather than a feature request. We got around it by changing our Swagger spec to include the basepath in every endpoint definition. It's not the most clean solution, but it works.
Nonetheless, thanks for the great work!

I don't use assertj-swagger anymore, but I still merge PRs and release new versions.

Yeah yeah, no worries...I know I've got to fix this myself.
This one really hit me by surprise and at first I doubted it was a bug at all. To me it looks like assertj-swagger is an established library as I don't know any other JVM- or Node.js-based lib that offers similar functionality. Yet, the basePath feature seems so fundamental to Swagger/OpenAPI that I first though I was doing something wrong when I found this bug.

We got around it by changing our Swagger spec to include the basepath in every endpoint definition.

True, that's the obvious workaround but I prefer fixing the tools rather than compromising on my code.

I've been thinking a bit more about this and I believe it boils down to 1 question.
Is this (my design-first contract)
basePath: /broker-monitor/v1
paths:
  /failure-messages:

equal to this (reverse engineered from impl-first code)
basePath: /
paths:
  /broker-monitor/v1/failure-messages:

or not. Academically it may not be equal but for all practical purpose it is. See also https://github.com/RobWin/assertj-swagger#comparing-expected-and-actual-paths-in-schemas about the config param assertj.swagger.pathsPrependExpected.
In order to not brake backwards compatibility I'll prepare a PR that adds basePath to the expected paths only if assertj.swagger.pathsPrependExpected is not set. This will make setting assertj.swagger.pathsPrependExpected obsolete if its value would be equal to basePath.


Can I set tabs to statusBar

I want to set tabs to statusBar or put them at the bottom. Could you help me? Thank you.
I wanted to focus more on writing and looking at code, but at the same time I had the need to switch between different tabs, so this weird idea came up

This is not a weird idea, it is fairly practical, however probably it is not possible to do with vscode at the moment :(
https://github.com/microsoft/vscode/issues/140674


Why  tf.train.init_from_checkpoint in func model_fn run twice

In function model_fn:
        if init_checkpoint:
            (assignment_map, initialized_variable_names) = modeling.get_assignment_map_from_checkpoint(tvars,init_checkpoint)
            tf.train.init_from_checkpoint(init_checkpoint, assignment_map)
            if use_tpu:
                def tpu_scaffold():
                    tf.train.init_from_checkpoint(init_checkpoint, assignment_map)
                    return tf.train.Scaffold()
                scaffold_fn = tpu_scaffold
            else:
                tf.train.init_from_checkpoint(init_checkpoint, assignment_map)

why tf.train.init_from_checkpoint should run twice?

The first init op can be omitted. I think the author leave it incautiously.


Rename 'user' to 'member'

I don't think the underlying models need to be changed, just wherever we use the word "user", we should use the word "member".
Example: "Become a member" vs "sign up"

I think this is a great idea for several reasons:

It makes signing up for OpenFarm cool and have purpose/specialness. I'm now a member!
It reinforces OpenFarm's community focus. We're like a social club, where people interact and share and have fun, and everyone is invited to join
It opens us up to a cool revenue stream idea: membership dues. We could have an annual 'membership drive' where we ask for a sliding scale donation. Asking for a donation in this context sounds more appealing (at least to me) than let's say how Wikipedia does it with just a big banner.
It promotes a sense of ownership in OpenFarm/the commons from our members

The word 'user' also doesn't imply 'giver' in any capacity. And we definitely want to foster the giving and sharing of knowledge!


How to input sequence length filter information using filter protein by regular expression option?

Greetings,
I would like to thank you for providing an  open source database processing tool.
I am currently trying to place a protein length filter, to filter out sequences lesser than or equal to 6 amino acid from my fasta peptide database. I am unsure what to key-in the options provided. Please do advise me on how I can proceed?
Regards,
Ben

Hi Ben,
Actually, if all you want is to filter by sequence, you're better off going via the 'File' --> 'Process' menu after you've loaded your database into DBToolkit (admittedly, it's a bit counterintuitive). The attached screenshot shows the menu on the left with a blue arrow.
In the processing dialog that pops up, choose 'Filter only' at the bottom of the first (large) panel (see selection in screenshot on right (blue arrow halfway down)). Of course, at the top, you should select the appropriate filter, which in your case is the FASTA SequenceLength filter (blue arrow at top), and then specify which length cutoff you'd like. Note that if you specify '<6' (as in the example, second blue arrow on top), only sequences less than or equal to 6 will be present in the output database. Conversely, if you would specify '>6', then only sequences larger or equal to 6 will be present in the output database.
Based on your question, I think what you want to filter by, is '>7', which will output a database containing all sequences of length 7 or more.
If you're happy with DBToolkit, please do not forget to cite it (http://www.ncbi.nlm.nih.gov/pubmed/16030071).
Cheers,
lnnrt.

Hi,
Actually, I never implemented a boolean combination of length filters (while I could have), as I thought it was almost just as easy to concatenate the steps. So you first filter your source database using the abovementioned steps and with ">7", and you then load the resulting database in, and process again, but now with "<50" as the length filter parameter.
It's actually very quick and easy to do this.
PS: if you process lots of databases, or want to create series of databases, you can access all functionality on the command line, and script all of these things.

Hi Innrt,
Thanks mate! I am processing only a couple of cell line specific protein databases. I will do as what you said above.
Thanks.


Move y-axis of vertical bar charts to the right side like other charts.

Closes #82
@brittsikora , version is vertical-bars-y-axis-fix

Expected Result: the y-axis of the vertical bar charts are now on the right side of the chart
Outcome: Pass


[BUG] app not updating after installing from in-app update screen.

app dialog appears that a new version available then i click on update button and update download starts. when app update download completes a snackbar pop ups and if i click on restart then the in-app update screen appears and starts installing but it doesn't show any updated screen. it just goes away and app restarts but version stays same and when i exit and reopen app it again shows the dialog. this is very confusing.
Samsung a10 , android 9

This occurs when the app with lower version code hasn't signed with the same key used in the higher version app. Can you please try this guide. Hope it will solve the issue, if not please let me know

app dialog appears that a new version available then i click on update button and update download starts. when app update download completes a snackbar pop ups and if i click on restart then the in-app update screen appears and starts installing but it doesn't show any updated screen. it just goes away and app restarts but version stays same and when i exit and reopen app it again shows the dialog. this is very confusing.
Samsung a10 , android 9

Make sure you install app from play store first then release update. It won't work if app is installed outside of play store.

Make sure you install app from play store first then release update. It won't work if app is installed outside of play store.

Thanks @SanojPunchihewa it was happening because it wasn't signed with the same key as play console.


Colored badges for private/public repositories

Description
Private and public repositories is poorly distinguishable in a repository list. Both has same color, font and form of a badge.
I suggest to improve that, for example, highlight a private repository by a purple (in case of dark mode and make it customizable) badge border color or something like that. This will be helpful in case of many repositories in a list.
In the html it does look like this:
Private
Public

Screenshot
No response
Example URL

I kind of agree that it could be better, but it's not worth adding JS for this and as you noticed they're indistinguishable with a CSS selector.


[CLI/codegen] Front-End Plugin Generated by CLI Doesn't Build

When generating a plugin front-end with
grafana-app-sdk project component add frontend --plugin-id=foo

The generated plugin fails to build with the error:
$ grafana-toolkit plugin:build
No longer supported. Use grafana create-plugin https://github.com/grafana/plugin-tools/tree/main/packages/create-plugin

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
make: *** [build/plugin-frontend] Error 1

Current workaround is to run
npx @grafana/create-plugin@latest migrate

in the plugin directory and reply y to all prompts, then create a plugin/LICENSE file (as this is not created by the migration).
However, the front-end code created by the CLI should work out-of-the-box and not require migration.

$ grafana-toolkit plugin:build
No longer supported. Use grafana create-plugin https://github.com/grafana/plugin-tools/tree/main/packages/create-plugin

Is this going to happen to existing code if the app-sdk version is updated? Or does it apply only to new code?

It looks like it might:

https://github.com/grafana/plugin-tools/tree/main/packages/create-plugin#update-your-plugin-build-config


Resizing tiles is unreliable in the three column layout

Describe the bug
Resizing tiles in the three column mode is sometimes erratic, doing one or more of: A. tile sizes increase or decrease more than their usual step size; B. the sides are apparently switched (resizes left when pressed right and vice-versa); C. tiles don't resize at all.
To Reproduce
I'm not exactly sure how to reproduce it, but I notice it quite often.
Steps to reproduce the behavior:

Switch to three column layout.
Have at least three windows.
Resize each tile using resize+(left/right) commands.
Resizing eventually fails or does not work as expected, most notably when there are only 2 windows in the layout, but occasionally observed with 3 windows too.

Cycling layouts and going back to three column seems to fix the problem until it re-appears. Perhaps one or more variables go out of bounds after many state changes, causing the weird behavior?
Expected behavior
Resizing should always work when there is enough screen space.
Log
No new log lines as this problem was happening, even with "debug" logs enabled.
Additional context
Observed on Xorg, no idea if the same happens on Wayland.

Xorg is not officially supported.
Can you see if the same behavior happens in Wayland?

I could reproduce this on Wayland, and I think I have a fix. Can you try the latest master branch build?

Awesome, I think this nightly might have fixed it. I'll close it for now - thank you!


Issue445: provide helper functions for multithreaded evaluation of some expensive functions

The overall idea is to make it easier to do some embarrassingly parallel tasks in parallel.
@bp-kelley : I'd love your feedback on whether the general pattern looks reasonable to you. For example, is there a problem with spawning a multi-threaded C++ task from a single Python thread?
This is connected to #445

Python already uses system threads, so this is unlikely to be an issue as long as the underlying code doesn't use any Python API calls itself (without acquiring the GIL that is).
However, this is currently not an issue because the RDKit interface doesn't release the GIL in the first place, so all python-threads would be halted anyway.  (This is actually in issue for rdkit-based threaded web apps that we should take a look at at some point, they block far too often).


Setup CircleCI project

Resolve #5

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


x-ms-parameter-grouping

If used, should create a Schema in the YAML file with the necessary information to build that grouping.

4.6+ has this.

Fixed


Builder counts from 1

Signed-off-by: John Howard<EMAIL_ADDRESS>Minor annoyance - the real world dev-ops guys isn't necessarily a computer programmer and generally counts from 1.

Let the bikeshed begin! :-D LGTM

I'm wearing my tin foil hat for this one ;)

LGTM
To me when using the word "step", "step 0" is usually meant as a "prerequisite" type of thing, so that's why I think "step 1" as the first step in the Dockerfile makes more sense.

Does this mean we can use one more layer on AUFS? :smile:
This will probably need docs changes btw, updating example output in some locations

Docs updated. They were inconsistent before - see reference\commandline\build.md L129 for example. Updated all to start from 1.

@jhowardmsft would you be willing to add a test to make sure no one moves it back to '0' w/o realizing that we purposely want it to start at '1'? I know we have existing tests that indirectly test for this but I'd prefer an explicit one.

Sure. I'll try to get to that tomorrow morning. On my list. Out of office for most of the rest of today.

@duglin - Added 'TestBuildStartsFromOne'

@jhowardmsft thanks!  still LGTM
ping @crosbymichael to make sure we're ok with this UX change.

LGTM


Add a license to the repository

I recently came across your project Shor-s-Quantum-Algorithm and I noticed that the repository github.com/luis6156/Shor-s-Quantum-Algorithm currently does not have a license specified.
Why Adding a License is Important?
As GitHub documents

Public repositories on GitHub are often used to share open source software. For your repository to truly be open source, you'll need to license it so that others are free to use, change, and distribute the software.

Would be possible to add a valid license to this repository? Probably something really OpenSource such as the Apache 2.0 license would fit really well.
Thanks!

Fixed! Sorry for the delay, hope this helps!

Thank you!


tarpaulin panic when building project

The project itself builds with no problem and passes all tests,
but tarpaulin panics when building project.

thread 'main' panicked at 'called Result::unwrap()on anErr value: ()', /home/travis/.cargo/registry/src/github.com-1ecc6299db9ec823/cargo-0.42.0/src/cargo/util/canonical_url.rs:42:13

Travis CI

I think this is a duplicate of #319. Try using tarpaulin 0.9.3 and see if the issue persists.

@buttercrab I'm working on a moderately big change that will hopefully solve all build related issues. Just ironing out the last few bugs :+1:

As an aside, Cargo 0.43.0 was tagged today, which does include the upstream fix for this issue.

@jmagnuson Sorry I'm late. I've tried 0.9.3 and I found parse error.

Error: "Failed to compile tests! Error: failed to parse lock file at: /home/travis/build/buttercrab/hyeo-ung-lang/Cargo.lock"
Travis CI

I found that during test, it prints logs to stdout. Maybe printing to stdout caused the problem.

@holmesmr How can I use that version? It's still in 0.42.0

Great! It works!


New landing page for Loading performance

Ship a new landing page for loading: why is it important? what is the business case for it?

cc @drufball as I imagine we'll coordinate heavily on any docs that try balancing the business case for improving loading performance before we dive into the nitty gritty of the technical details.


Update etcd 2.0.9 to etcd 3

Update etcd 2.0.9 to etcd 3
I've read the doc about update.Now I wonder if I should update 2.0.9 to 2.1,2.2,2.3 and then 2.3=>3, or I can just update 2.0.9 to 2.3, and the 2.3 =>3 ?

@drinktee  I have asked similar q?s earlier and the general idea is
2.0 -> 2.1 -> 2.2 -> 2.3 -> 3.0 -> 3.1
Above is the recommended way.
For all other types of upgrades, it might work but it isn't tested extensively.

@drinktee What @raoofm suggested is correct. We might test cross minor versions updates in the future, but we do not have the bandwidth to do it now.
I am closing this issue now.


Update 0 3 7

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

This depends on https://github.com/conda-forge/sacred-feedstock/pull/1

Triggered a re-run, let's hope it'll pass


[BUG 🐛] Facing error in android - Execution error

Facing error in android - Execution error: {};
const device =  useCameraDevice('front')
function handleFacesDetection(
faces: Face[],
frame: Frame
) {
try {
if(faces.length){
setlandmarksData(faces)
}
} catch (error) {
ShowLogs("error",error)
}
  }

const faceDetectionOptions = {
performanceMode: 'accurate',
landmarkMode: 'all'
}
{!!device? <Camera
ref={cameraRef}
style={StyleSheet.absoluteFill}
device={device}
photo={true}
isActive={true}
faceDetectionCallback={ handleFacesDetection }
faceDetectionOptions={ faceDetectionOptions }
/> :
No Device
}
    "react-native-vision-camera": "^4.5.3",
"react-native-vision-camera-face-detector": "^1.7.1",
"react-native-worklets-core": "^1.3.3",

"react-native": "0.75.4",

No logs provided, bad code formatting.... its really hard to help you this way.
Closing issue.


Consider deleting upgrade information only rather than calling abort in TimeoutExecuted

Summary
When a timeout is executed on an ORDERED channel, the channel will close. We want to delete upgrade information in this case. Currently we call abort which will write an error receipt and reopen the channel. The code is currently structured to close after the opening, but if it is moved around it could introduce an accidental bug. We should consider calling deleteUpgradeInfo directly rather than aborting the full upgrade. Once a channel closes the counterparty will be able to close as well, regardless of where the channels were in the upgrade process.
Discussed during our internal security audit of channel upgradability (v8.1.x)

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate contributors tagged/assigned

Can I tackle on this issue sir @colin-axner

@hoangdv2429 Sounds good, thank you!


Cask request: Dragand

Cask details
Name: Dragand
Homepage: http://dragand.watch/
Download URL: http://bit.ly/1DvWSNE
Description: quickly get subtitles to any movie/series by dragging the file with the movie/series to a dropzone provided by the app. You can choose your subtitles from 41 languages available and watch with VLC.

https://github.com/caskroom/homebrew-cask/pull/38075


Generated function

This change is

Current dependencies on/for this PR:

main

PR #2602

PR #2601

PR #2603   👈

This comment was auto-generated by Graphite.


consider making dart_api_dl.cc a pure C file

Currently it is a C++ file - which makes it impossible to reuse it in languages which allow simple consumption of C code (e.g. Go).

I made an example of making it a pure C file here: https://github.com/mraleph/go_dart_ffi_example/blob/master/dart_api_dl/include/dart_api_dl.c - so maybe we should just land it unless there is any opposition.
/cc @dcharkes

sgtm

@mraleph, I adapted your solution to https://dart-review.googlesource.com/c/sdk/+/157965.


Broken link on CONTRIBUTING.md

Hi, there is a broken link to CODE_OF_CONDUCT.md in CONTRIBUTING.md file.

#49 same issue already raised

#49 same issue already raised

Oh! sorry I didn't notice that, thank you I will close this issue now :slightly_smiling_face: :pray:

The same issue is already raised #49. So I decided it close this issue.


URL Link

What URL Link am I supposed to put in the url area?

# Ask the user for the URL and output file name url = input("Enter the URL: ") output_file_name = input("Enter the output file name: ")
The url you are expected to enter should be the target photo URL. This means it should point to the direct web address of the photo you want the program to process.
Example Scenario
What is a target photo URL? A direct link to an image hosted online. For instance:

https://example.com/path-to-image.jpg
Steps to Find the Target Photo URL:
Right-click on an image in your browser.
Select "Copy Image Address" (or similar, depending on your browser).
Paste this link into the program when prompted for the URL.


Static binary assets are not served correctly when they have capital letters in extension

When serving static binary assets configured with:
files: [
	...
	{pattern: './fixtures/images/*.jpg', included: false, served: true},
	{pattern: './fixtures/images/*.JPG', included: false, served: true},
	...
]

Only images with *.jpg extensions are served properly. Capital letters extension shows a 'broken image' icon. This seems to be due to not recognising said image as a binary file. Adding "JPG" to lib/binary-extensions.json or modifying lib/preprocessor.js condition like so:
var thisFileIsBinary = isBinary[path.extname(file.originalPath).toLowerCase()]

Solves the problem.
Not sure how to write a failing test for this to submit a fix.

You can add a test here: https://github.com/karma-runner/karma/blob/8a9c8c739d612f3d5d07cc80231ff85f1395d122/test/unit/preprocessor.spec.coffee#L182 and add a file with an upper case extension here https://github.com/karma-runner/karma/blob/8a9c8c739d612f3d5d07cc80231ff85f1395d122/test/unit/preprocessor.spec.coffee#L6

Current master branch has failing tests for me before I even started editing both under node v0.12.6 and iojs v2.3.3:
$ grunt
Running "browserify:client" (browserify) task
>> Bundle static/karma.js created.

Running "test:unit" (test) task

Running "mochaTest:unit" (mochaTest) task

  ․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․
  ․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․

  377 passing (5s)
  3 pending

Running "test:client" (test) task
Running /Users/kruk/dev/karma/bin/karma start test/client/karma.conf.js --single-run --no-auto-watch --reporters=dots
failed to add custom browserify preprocessor
{ [Error: Cannot find module 'karma/lib/preprocessor'] code: 'MODULE_NOT_FOUND' }
22 07 2015 00:05:14.797:INFO [framework.browserify]: 472361 bytes written (0.87 seconds)
22 07 2015 00:05:14.808:INFO [karma]: Karma v0.13.2 server started at http://localhost:9876/
22 07 2015 00:05:14.814:INFO [launcher]: Starting browser Chrome
22 07 2015 00:05:16.157:INFO [Chrome 43.0.2357 (Mac OS X 10.10.4)]: Connected on socket rTnfwhUtnLPRh4G1AAAA with id 19490884
Chrome 43.0.2357 (Mac OS X 10.10.4) ERROR
  Uncaught ReferenceError: require is not defined
  at /Users/kruk/dev/karma/test/client/karma.spec.js:1
Chrome 43.0.2357 (Mac OS X 10.10.4): Executed 0 of 0 ERROR (0.162 secs / 0 secs)
[Error: failed to add custom browserify preprocessor
{ [Error: Cannot find module 'karma/lib/preprocessor'] code: 'MODULE_NOT_FOUND' }]
Fatal error: Client unit tests failed.

You'll need to run these commands first https://github.com/karma-runner/karma/blob/master/.travis.yml#L23-L24


[FeatureRequest] Keep plots order, or sort plots

Now I'm studying image generation task.
I plot images every fixed train epochs, like below.

But sometime (especially when I change the environment) the order is messed up.

I'm glad if the order is not collapsed, or I can sort them by their titles.

Hi @t-ae
We've also found this to be annoying internally :) An easy fix is to add a sort button that sorts by a field called 'content_id'. I'll try to get that done some time soon.

Is there any progress in this feature?


Recalibration function

A problem with the data is that the energy calibration is not accurate for many of the files. Fixing the energy calibration is required before an accurate analysis can be done.
Develop a function that takes an SPE filename as input.

Load the file
Find the peaks in the spectrum that should be calibrated to (which isotopes? K-40, Tl-208, ...)
Verify that the calibration makes sense (it should be almost linear, and the offset between calibration and actual peak positions should be small)
Save a new file that includes the corrected energy calibration. If the input filename is asdf.spe the output can be like asdf_recal.spe. You'll have to check that Mark Bandstra's SPEFile code can write an SPE file and write the energy calibration correctly.

The other thing to keep in mind is that this doesn't have to be 100% automatic, and it probably shouldn't. So if something doesn't look right, then print a message or raise an exception, and let a human look into it. But hopefully we can do 95% of the recalibration, automatically.


On iPadOS13.1 back to acknowledgements from license detail page crashes

This is of course an Apple bug but reporting to see about a work around until Apple fixes their end. Hitting the back button from a settings page two child panes deep crashes for iPadOS13.1 released version.

@sashahcat Sorry, I've been very busy with work. I hope to have a look at this in the weekend.
Do you know if this still causes crashes with iPadOS 13.1.2 ?
Does this also crash in the simulator?
Have you found a workaround for this problem?

Yes, it still crashes with iPadOS 13.1.2. I believe it also crashes in the simulator. No true workaround found. Submitted radar to Apple and waiting, unless someone else finds a workaround. The only workaround I know of would be to reformat to not be two child panes deep, would not display as nicely.

Seems to have been fixed in iPadOS 13.2. Cheers!


feat: Add additionalArgs parameter to Repo.diff()

#8
Need to be able to select the commitish to compare against with diff in order to implement ratchet. For example, if the user specifies ratchet-from as origin/main, then we want to run git diff -U0 origin/main.
This PR adds an additionalArgs vararg parameter to Repo.diff(), s.t. we can pass any amount of additional arguments. I'm thinking this will be good for many of the other Repo methods as well, but right now it's here that we need it.

Codecov Report

Merging #26 (9f7c064) into main (a644f5d) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main      #26   +/-   ##
=======================================
  Coverage   93.54%   93.54%
=======================================
  Files           2        2
  Lines          31       31
=======================================
  Hits           29       29
  Misses          2        2

Impacted Files
Coverage Δ

src/git.ts
90.90% <100.00%> (ø)

Continue to review full report at Codecov.

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

@algomaster99 I've realized that when using dependabot, the dist files don't get updated, which is why this PR alters so many of those files.
I'll see to a way to fix that.

Actually, hold off with a review until I've fixed the dependency thing.

This merge commit is an unintended side effect of the auto-update of generated files: cb50e18. It appears because the GHA workflow that updates dist files merges the head branch with the base branch and then runs the tests.
I'll have to deal with that later, spent too much time on the generated files this week ...
@algomaster99 This PR is ready for review.

@algomaster99 I need to merge this now, feel free to do a review post-mortem if you'd like!


Prevent the compiler from converting "secure" memcmp() into canonical one.

Current implementation of "secure" memcmp() is not that secure - the compiler can use LTO and see that the calling code only tests for zero values and then convert it into canonical, not "secure" version.

+1

So I wonder if this problem returns if we change return x to return x != 0

@kroeckx Do you mean the new code or the original code?

The new code.

@kroeckx Such change should not affect the new code. If the compiler treats volatile* as "read this stuff no matter what" then it will compile this code as expected no matter what the return statement is. If the compiler deduces that original variables are not really volatile and decides to ignore volatile* then it can break either code. The calling code checks the returned value for != 0 anyway so with LTO on the two return statements do effectively the same.

This change doesn't strictly guarantee that those variables are treated as volatile (because original variables are not necessarily declared as volatile) but current compilers treat volatile* pointers as if they pointed to variables declared volatile.

See http://gcc.godbolt.org/#{"version"%3A3%2C"filterAsm"%3A{"labels"%3Atrue%2C"directives"%3Atrue%2C"commentOnly"%3Atrue%2C"intel"%3Atrue}%2C"compilers"%3A[{"sourcez"%3A"MQSwdgxgNgrgJgUwAQB4DOAXOiBmA6ACwD4AoEzAQwxAiQDcB7EOJAWwVbQQwH00AKRsyQAqegBokaEAC8EPDEjABKJAG8SSegyhUQUZDDDSA5mAQsIBCgCdRSAA5IAvEkE69BpEdPnL1uxFlOgBuTSQcBht%2BaTkFJBAXJAAGEITUJTSAaiyQVQ0tLQcAbRAAXSTU8IBfElqyIRYcAEZ%2BfPCfEDMLJCtbJAAPYoAWMrCtdk5uPn4ByViEBhxB5TD6xoiAJjb1DuMuv16AweKAdjHwya5eATmpWUXlgdW6kiAAA%3D%3D"%2C"compiler"%3A"g530"%2C"options"%3A"-x c -std%3Dc99 -O3"}]}.
See also http://gcc.godbolt.org/#{"version"%3A3%2C"filterAsm"%3A{"labels"%3Atrue%2C"directives"%3Atrue%2C"commentOnly"%3Atrue%2C"intel"%3Atrue}%2C"compilers"%3A[{"sourcez"%3A"MQSwdgxgNgrgJgUwAQB4DOAXOiBmA6ACwD4AoEzAQwxAiQDcB7EOJAWwVbQQwH00AKRsyQAqegBokaEAC8EPDEjABKJAG8SSegyhUQUZDDDSA5mAQsIBCgCdR23dQNIADkgC8SQTr3Ojp80trOzFGR30EZToAbk0kHAYbfmk5BSQQDyQABmj01CVcgGpCkFUNLS0XAG0QAF1MnLiAXxIWsiEWHABGfjK4%2FxAzCyQrWyQADyqAFlrYrXZObj5%2BcckUhAYcCeVYto74gCZe9X7jQcCR4ImqgHZZuIWuXgFVqVkNrfGd1pIgA%3D%3D"%2C"compiler"%3A"g530"%2C"options"%3A"-x c -std%3Dc99 -O3"}]}.

@briansmith Nice!!! Here's what I found so far:

It isn't reproduced in gcc 4.5.3 but is reproduced in 4.6.4 so it's a rather new change.
It only happens when size of array is 1, 2 or 4 bytes.
I would guess that size to overwrite must be a compile time constant for this to happen.
clang 3.7 doesn't exhibit this behavior.

So this is a bug in gcc which must be fixed.

@briansmith Careful!  You didn't have the same source code in both cases.  In the first case you had this:
#include <stddef.h>

static void memset_s(void * v, size_t n) {
  volatile unsigned char * p = (volatile unsigned char *)v;
  for(size_t i = 0; i < n; ++i) {
    p[i] = 0;
  }
}

void f1() {
  unsigned char x[4];
  memset_s(x, sizeof x);
}

void f2() {
  unsigned char x[7];
  memset_s(x, sizeof x);
}

while in the second case you had this:
#include <stddef.h>

static void memset_s(void * v, size_t n) {
  volatile unsigned char * volatile p = (volatile unsigned char * volatile)v;
  for(size_t i = 0; i < n; ++i) {
    p[i] = 0;
  }
}

void f1() {
  unsigned char x[4];
  memset_s(x, sizeof x);
}

void f2() {
  unsigned char x[7];
  memset_s(x, sizeof x);
}

Subtle -but huge- difference.

And this is the difference:
--- /tmp/x  2016-01-26 13:19:02.698960078 -0600
+++ /tmp/y  2016-01-26 13:19:10.222929880 -0600
@@ -1,7 +1,7 @@
 #include <stddef.h>

 static void memset_s(void * v, size_t n) {
-  volatile unsigned char * p = (volatile unsigned char *)v;
+  volatile unsigned char * volatile p = (volatile unsigned char * volatile)v;
   for(size_t i = 0; i < n; ++i) {
     p[i] = 0;
   }

So it seems the case has to be to volatile pointer to volatile unsigned char.

I'd not know about gcc.godbolt.org.  Very nice.  I especially like the colorize option:
http://gcc.godbolt.org/#{"version"%3A3%2C"filterAsm"%3A{"labels"%3Atrue%2C"directives"%3Atrue%2C"commentOnly"%3Atrue%2C"intel"%3Atrue}%2C"compilers"%3A[{"sourcez"%3A"MQSwdgxgNgrgJgUwAQB4DOAXOiBmA6ACwD4AoEzAQwxAiQDcB7EOJAWwVbQQwH00AKRsyQAqegBokaEAC8EPDEjABKJAG8SSegyhUQUZDDDSA5mAQsIBCgCdRSAA5IAvEkE69BpEdPnL1uxFlOgBuTSQcBht%2BaTkFJBAXJAAGEITUJTSAaiyQVQ0tLQcAbRAAXSTU8IBfElqyIRYcAEZ%2BfPCfEDMLJCtbJAAPYoAWMrCtdk5uPn4ByViEBhxB5TD6xoiAJjb1DuMuv16AweKAdjHwya5eATmpWUXlgdW6kiAAA%3D%3D"%2C"compiler"%3A"g530"%2C"options"%3A"-x c -std%3Dc99 -O3"}]}

So it seems the case has to be to volatile pointer to volatile unsigned char.

IMO, that is almost the opposite conclusion to draw. The correct conclusion is that we can't rely on tricks with volatile to implement this function.
These examples came from the thread on Twitter here: https://twitter.com/BRIAN_____/status/691580542207160321. The conclusions from that thread were:

The C standard only requires volatile semantics for pointers-to-volatile when the pointed-at thing was originally declared/defined to be volatile. The C standard allows a pointer-to-volatile pointing at a non-volatile object to be treated as pointer-to-non-volatile. This makes sense, because it is a pointer to a non-volatile object.
GCC and Clang apparently try to make volatile mean something stricter than what the C standard says it means.
However, not all compilers make volatile mean the thing that people are hoping it means in order for the trick in this patch to do what it is intending to do. Some may not even try (only conforming to what the spec requires) and others might try and fail (the first GCC example above).

John's code (the second example) works, however I don't consider it reliable enough to rely on.

My other concern with it is that I don't think the C standard guarantees that it needs to read everything if it knows the result already, and so could in theory check that x != 0 and break in that case.

@briansmith That's true, but nonetheless one has to do something.  In the shortest term using volatile this way works for many compilers.  In the medium term the alternative is assembly-coding such functions, but that takes more time.  In the longer term we need the next C standard to do something useful here.

@briansmith This is not even a bug in gcc. Have you noted that the array must have size 1, 2 or 4? That makes it eligible for being allocated in a register. That's why there're no writes - no memory to overwrite in the first place. If you insert a printf() call and pass the array into printf() then the array actually is allocated in memory and writes are not eliminated.

@kroeckx If the compiler decides to treat memory pointed to by volatile* as volatile then it will not insert any x!=0 checks because breaking a loop early would change the sequence of reads.

In the shortest term using volatile this way works for many compilers. In the medium term the alternative is assembly-coding such functions, but that takes more time. In the longer term we need the next C standard to do something useful here.

I agree 100%.

This is not even a bug in gcc. Have you noted that the array must have size 1, 2 or 4? That makes it eligible for being allocated in a register. That's why there're no writes

Good point.

no memory to overwrite in the first place.

I'm not convinced on this point.
However, I don't want perfect to be the enemy of the good.

@briansmith How about this code?
  char x[4];
  x[0] = 0;
  printf( "%s", x );
  memset_s(x, 4);

The following is emitted:
    subq    $24, %rsp
    movl    $.LC0, %edi
    xorl    %eax, %eax
    movq    %rsp, %rsi
    movb    $0, (%rsp)
    call    printf
    movb    $0, (%rsp)
    movb    $0, 1(%rsp)
    movb    $0, 2(%rsp)
    movb    $0, 3(%rsp)
    addq    $24, %rsp
    ret

My point is that your original code which only declares an array and then overwrites it and then the array is never accessed doesn't really need much protection because how would that array happen to contain any sensitive data?

@briansmith Looking at N1570 (so we all can, and accepting that that's just almost-C11 while OpenSSL can't use C11 yet) the spec specifically says (6.7.3) that accessing a volatile object through a pointer to non-volatile is undefined, but says nothing of the reverse:
If an attempt is made to refer to an object defined with a volatile-qualified type through use of an lvalue with non-volatile-qualified type, the behavior is undefined.

I believe this means that the compiler has to honor the cast to volatile (and even a cast that drops the volatile specifier, but then you get undefined behavior if you actually try to access the object through a pointer to non-volatile).  Of course, spec lawyering wouldn't stop here, and we'd have to look at C99 too, and make sure we have every footnote and clause read and understood.  But so far this is my take, and you're welcome to correct me if this is wrong (please though, with pointers to spec text).
Note that even if the object is automatic and small, the compiler would have to honor the volatile qualifier because there might be something very special going on that the compiler can't know about.  For objects on the stack one might wonder what that would be... but nonetheless one could imagine it: for example, communicating with a GC that (carefully!) traverses stacks of running threads.

I can also imagine a very aggressive LTO that optimizes away calls to assembly-coded memset_s() and memcmp_s() functions unless those are declared as taking pointers to volatile memory.  (But, of course, being assembly-coded means that they can be optimized in ways that the compiler couldn't.)
The bottom-line is that this sort of change should be accepted, though assembly-coded implementations would be better in the longer term.

Oh, and perhaps these functions' prototypes should have pointer to volatile-qualified objects as arguments, forcing the cast at the call sites precisely to disable aggressive LTO.

@nicowilliams The spec talks about accessing an "object defined with a volatile-qualified type" a.k.a. "volatile object". That is, all the requirements on "volatile" only apply when the original object being pointed at was qualified volatile.

but says nothing of the reverse

Exactly. That means you can't rely on it to work any particular way.

I can also imagine a very aggressive LTO that optimizes away calls to assembly-coded memset_s() and memcmp_s() functions unless those are declared as taking pointers to volatile memory. (But, of course, being assembly-coded means that they can be optimized in ways that the compiler couldn't.)
I agree with your conclusions: It's an improvement to "just add volatile" and then later do the assembly language implementations.

In the same document, you can read the definition of memset_s. It's definition is much stricter than volatile's definition. In particular, the compiler needs to treat (its own) memset_s differently from every other function. This is clear because the pointer argument to memset_s isn't even volatile. This means that it is not possible to implement memset_s in C.

The bottom-line is that this sort of change should be accepted, though assembly-coded implementations would be better in the longer term.

I agree.

So has everyone come to consensus here?  What should openssl do?

@richsalz The proposed patch can't make things worse, and does make things better for at least some compilers.  The consensus is to take this sort of patch in the short-term; longer-term an assembly-coded function might be better.
I do believe it  would be more prudent to have the prototype declare the pointer arguments as pointing to volatile, but that can be left for another day.
@briansmith I believe you're misreading the spec.  Semantics point 6 refers to access to a volatile-qualified type object via non-volatile-qualified pointer types (but not the reverse) and talks about "defined", but semantics point 7 is the one that we really care about and it doesn't say or imply that the object must have been defined as volatile.
It makes sense that point 6 refers to the object having been defined as volatile...  After all, consider this contrived case:
unsigned char a[4];
unsigned char *ap = a;
volatile unsigned char *vap = (volatile unsigned char *)ap;
unsigned char *ap2 = (unsigned char *)vap;

*ap2 = 'A'; /* OK, since the object is not volatile */

There the object was defined as non-volatile, therefore accessing it via ap2 should be OK because the compiler can see this.  But here we'd definitely get undefined behavior:
volatile unsigned char a[4];
unsigned char *ap = (unsigned char *)&a[0]; /* OK if we don't use ap */

*ap = 'A'; /* undefined behavior! */

But also, if C was as you say, then one could not use mmap(2) to access device registers, since there would be no way to treat the mapped memory as volatile, and we'd then need an mmap_volatile(2) version.  This would be inconvenient (not that it would be surprisingly inconvenient; standards can have such artifacts, such as dlsym(2) not being able to return pointers to functions...).

@richsalz @briansmith The spec says (<IP_ADDRESS>, point 2):
For any qualifier q, a pointer to a non-q-qualified type may be converted to a pointer to the q-qualified version of the type; the values stored in the original and converted pointers shall compare equal.

In other words, casting a pointer to non-volatile type to a pointer to  volatile type works.
The behavior where the pointer itself has to also be volatile is just a gcc bug.

@nicowilliams It's not even a bug in gcc in terms of "gcc deliberately failing to emit writes and refusing to overwrite memory". In this specific case (an array fits into a register and its address is not passed anywhere) the whole array is allocated in a register, so there's no memory which could have been overwritten.

@Dmitry-Me The array's address is most certainly passed: because the array is passed to a function, the passed value decays to a pointer.  That it fits in a register is irrelevant.  That the function is inlined is also irrelevant.  The pointer was declared as pointing to a volatile object, therefore the memory accesses should have been performed, therefore it was a gcc bug.

@nicowilliams Here's my guess of what happens. First the function is inlined, then the compiler sees that the variable fits into a register and also all operations can be carried out without allocating memory, then it decides that no code needs to be emitted.

@Dmitry-Me That's a good guess, but nonetheless that would be a compiler bug, as inlining shouldn't change the arrays-decay-to-pointers semantics, and therefore the pointer-to-volatile conversion had to be honored.
We know how to work around the bug: declare the object and the pointer volatile in the function's prototype, then assign those arguments to a non-volatile pointer to volatile in the function.  For some compilers declaring the argument pointer volatile itself has not impact when the argument is passed via registers anyways, but it does disable the gcc bug in question.  http://goo.gl/WdOoti -- all compilers in their list don't optimize away this memset_s():
/*
 * Making the argument a pointer to volatile memory should disable LTO.
 * The extra volatile keyword here works around a bug in some version of GCC.
 */
static void memset_s(volatile void * volatile v, size_t n) {
  volatile unsigned char *p = v; /* but now use a non-volatile pointer to volatile so we can go faster */
  for(size_t i = 0; i < n; ++i) {
    p[i] = 0;
  }
}

Now, because these compiler bugs have happened and could be worse in other compilers, it'd be nice if OpenSSL could test this at build time and warn.  Constructing such a test will be fun.

So in master and 1.0.2 we make the parameters void; see 98ab576 for example.  Closing this.  If there's more to do, please open a new PR. :)

@richsalz Making the pointer itself in the prototype would work around that GCC bug.  Otherwise it LGTM.

sorry, i don't know what you mean?  and my comment about making "the parameters void" should have been "make them volatile" :)

There is no GCC bug. There is a lot of not understanding what volatile actually means, but that's not a bug in GCC if "bug" means "does not conform to ISO C".

@richsalz Making the prototype this:
int CRYPTO_memcmp(const volatile void * volatile a, const volatile void * volatile b, size_t len);

works around a GCC bug and doesn't break with the other compilers.  The in_a and in_b pointers in CRYPTO_memcmp()'s body should remain as const volatile unsigned char *.

And then the body doesn't match the prototype? I don't like that.

The function's definition and declaration have to match, naturally.  The arguments should be pointers to volatile, and they should be volatile pointers to volatile only to work around that gcc bug.  The pointers in_a and in_b need only be pointers to volatile.  There's nothing wrong with that nor not to like.

your initial comment confused me.  submitting for review, thanks.

commit 769adcf  thanks!

Excellent!

Well, not really excellent. Code looks like magic an isn't proper commented. Which means it'll be broken sooner or later.

It takes an amount of time dependent on |len|, but independent of the

contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements
into a defined order as the return value when a != b is undefined, other

than to be non-zero.

than to be non-zero.  The uncommon use of volatile is to try and

prevent compilers from optimizing this "down to" the standard memcmp

which is probably not timing-attack safe.
*/

Ok?

@richsalz Not even close to OK. I'll sumbit a PR in a day or two.

Really?  Shrug, okay, look forward to seeing it.

@richsalz I submitted https://github.com/openssl/openssl/pull/606


[main] Upgrade to latest dependencies

Cron -knative-prow-robot
/cc knative-sandbox/source-wg-leads
/assign knative-sandbox/source-wg-leads
Produced by: knative-sandbox/knobots/actions/update-deps
Details:
bumping knative.dev/pkg 768f44f...77555ea:
  > 77555ea upgrade to latest dependencies (# 2398)
bumping knative.dev/eventing 76366bc...9e0e90c:
  > 9e0e90c Prober waits until receiver state != active or timeout (# 6074)
  > f074878 :fire: Remove k8s 1.20 APIs (# 6068)
  > ad895de Upgrade test waits for sender deletion (# 6050)
  > c94bfb3 upgrade to latest dependencies (# 6065)
  > ef00e28 Update and rename roadmap-2021.md to roadmap.md (# 6067)
  > e0e3f44 Implement Subscriptions API Filters in MTChannelBroker (# 5995)
  > 7d73613 Use zap.NewProductionConfig and specific time encoding (# 6043)
  > d7b4d2c Change default Broker delivery spec (# 6011)

/lgtm
/approve


Auth session expires after 1 hour

We need to refresh the session token periodically.

A workaround to re-authenticate:
`from neurosity import neurosity_sdk
from dotenv import load_dotenv
import os
import sys
import time
from pprint import pprint
def login():
try:
load_dotenv()
    neurosity = neurosity_sdk({
        "device_id": os.getenv("NEUROSITY_DEVICE_ID"),
    })

    neurosity.login({
        "email": os.getenv("NEUROSITY_EMAIL"),
        "password": os.getenv("NEUROSITY_PASSWORD")
    })
except Exception as ex:
    raise ex

print(f"Authenticated...")
return neurosity

def callback_signal_quality(data):
## Dummy: just printing signal quality to console
os.system('clear')
pprint(data)
def main() -> int:
neurosity= login()
while True:
    try:
        unsubscribe_signal_quality = neurosity.signal_quality(callback_signal_quality)
        # Recheck if we are still authenticated periodically
        time.sleep(60)

        state=neurosity.status_once()['state']
    except Exception as ex:
        print(ex)
        try:
            neurosity=login()
        except Exception as ex:
            raise ex

unsubscribe_signal_quality()
return 0

if name == "main":
sys.exit(main())`


Added some Javascript Resoruce Website

In the website section I have added some javascript website resource.

you have added images of react and resource of js?


NPM alpha/prerelease dependencies don't update as expected

Is there an existing issue for this?

[X] I have searched the existing issues

Package ecosystem
Yarn
Package manager version
yarn 4.4.0
Language version
No response
Manifest location and content before the Dependabot update
https://github.com/blimmer/dependabot-bug-report/blob/main/package.json
{
  "name": "dependabot-bug-report",
  "version": "0.1.0",
  "bin": "bin/dependabot-bug-report.js",
  "scripts": {
    "build": "tsc",
    "watch": "tsc -w",
    "test": "jest",
    "cdk": "cdk"
  },
  "devDependencies": {
    "@aws-cdk/aws-scheduler-alpha": "2.149.0-alpha.0",
    "@aws-cdk/aws-scheduler-targets-alpha": "2.149.0-alpha.0",
    "@types/jest": "^29.5.12",
    "@types/node": "20.14.9",
    "aws-cdk": "2.149.0",
    "jest": "^29.7.0",
    "ts-jest": "^29.1.5",
    "ts-node": "^10.9.2",
    "typescript": "~5.5.3"
  },
  "dependencies": {
    "aws-cdk-lib": "2.149.0",
    "constructs": "^10.0.0",
    "source-map-support": "^0.5.21"
  },
  "packageManager"<EMAIL_ADDRESS>}

https://github.com/blimmer/dependabot-bug-report/blob/main/yarn.lock
dependabot.yml content
https://github.com/blimmer/dependabot-bug-report/blob/main/.github/dependabot.yml
version: 2
updates:
  - package-ecosystem: 'npm'
    directory: '/'
    schedule:
      interval: 'daily'
    commit-message:
      prefix: 'chore(deps): '
    groups:
      cdk-updates:
        applies-to: version-updates
        patterns:
          - '@aws-cdk/*'
          - 'aws-cdk'
          - 'aws-cdk-lib'
        update-types:
          - patch
          - minor
          - major
      security-updates:
        applies-to: security-updates
        update-types:
          - patch
          - minor
          - major
      safe-updates:
        applies-to: version-updates
        update-types:
          - patch
          - minor
        exclude-patterns:
          - '@types/node'
      major-updates:
        applies-to: version-updates
        exclude-patterns:
          - '@types/node'
        update-types:
          - major

Updated dependency
This should update the following:
aws-cdk from 2.149.0 -> 2.152.0
aws-cdk-lib from 2.149.0 -> 2.152.0
@aws-cdk/aws-scheduler-alpha from 2.149.0-alpha.0 -> 2.152.0-alpha.0
@aws-cdk/aws-scheduler-targets-alpha from 2.149.0-alpha.0 -> 2.152.0-alpha.0
What you expected to see, versus what you actually saw
Dependabot successfully figures out the aws-cdk and aws-cdk-lib updates, but not the alpha packages.
GitHub actions run: https://github.com/blimmer/dependabot-bug-report/actions/runs/10427035923/job/28881042089
Log archive: 3_Run Dependabot.txt
Relevant part of logs:
updater | 2024/08/16 22:28:25 INFO <job_870468449> Checking if @aws-cdk/aws-scheduler-alpha 2.149.0-alpha.0 needs updating
  proxy | 2024/08/16 22:28:25 [120] GET [https://registry.npmjs.org:443/@aws-cdk%2Faws-scheduler-alpha](https://registry.npmjs.org/@aws-cdk%2Faws-scheduler-alpha)
2024/08/16 22:28:25 [120] 200 [https://registry.npmjs.org:443/@aws-cdk%2Faws-scheduler-alpha](https://registry.npmjs.org/@aws-cdk%2Faws-scheduler-alpha)
  proxy | 2024/08/16 22:28:25 [122] HEAD [https://registry.npmjs.org:443/<EMAIL_ADDRESS>2024/08/16 22:28:25 [122] 200 [https://registry.npmjs.org:443/<EMAIL_ADDRESS>updater | 2024/08/16 22:28:25 INFO <job_870468449> Latest version is 2.149.0-alpha.0
updater | 2024/08/16 22:28:25 INFO <job_870468449> Checking if @aws-cdk/aws-scheduler-targets-alpha 2.149.0-alpha.0 needs updating
  proxy | 2024/08/16 22:28:25 [124] GET [https://registry.npmjs.org:443/@aws-cdk%2Faws-scheduler-targets-alpha](https://registry.npmjs.org/@aws-cdk%2Faws-scheduler-targets-alpha)
2024/08/16 22:28:25 [124] 200 [https://registry.npmjs.org:443/@aws-cdk%2Faws-scheduler-targets-alpha](https://registry.npmjs.org/@aws-cdk%2Faws-scheduler-targets-alpha)
  proxy | 2024/08/16 22:28:26 [126] HEAD [https://registry.npmjs.org:443/<EMAIL_ADDRESS>2024/08/16 22:28:26 [126] 200 [https://registry.npmjs.org:443/<EMAIL_ADDRESS>updater | 2024/08/16 22:28:26 INFO <job_870468449> Latest version is 2.149.0-alpha.0

Native package manager behavior
> yarn upgrade-interactive
 Press <up>/<down> to select packages.            Press <enter> to install.
 Press <left>/<right> to select versions.         Press <ctrl+c> to abort.

? Pick the packages you want to upgrade.
Images of the diff or a link to the PR, issue, or logs
See above.
Smallest manifest that reproduces the issue
I have a simple repro repository here: https://github.com/blimmer/dependabot-bug-report

We are seeing the same issue with dependencies of the same kind.
This is our Dependabot config:
version: 2
updates:
  - package-ecosystem: npm
    directories:
      - "/"
    labels: [ ]
    schedule:
      interval: daily
    versioning-strategy: increase
    ignore:
      - dependency-name: "@middy/core"
        update-types: [ "version-update:semver-major" ]
    groups:
      aws-sdk-v3:
        patterns:
        - "@aws-sdk/*"
        - "@smithy/*"
        - "aws-sdk-client-mock"
        - "aws-sdk-client-mock-jest"
      aws-cdk:
        patterns:
        - "@aws-cdk/cli-lib-alpha"
        - "aws-cdk-lib"
        - "aws-cdk"
      typedoc:
        patterns:
        - "typedoc"
        - "typedoc-plugin-*"

Which doesn't pick up the pre-release packages. Here are the Dependabot logs

In all cases the @aws-cdk/cli-lib-alpha package is always left behind.
I am not familiar with the codebase at all, but looking at the tests, there seems to be one that says that this should not be happening and that tests pre-release updates explicitly: https://github.com/dependabot/dependabot-core/blob/ddb9722dd9ed00daf54b5115ccfe033c6bb910b7/npm_and_yarn/spec/dependabot/npm_and_yarn/update_checker/requirements_updater_spec.rb#L320-L342


Discuss for kl_ in loss function

I see you compute kl_ in your code like that:
kl_ = math.log(self.q_logvar_init) - self.sigma_weight + (sig_weight2 + self.mu_weight2) / (2 * self.q_logvar_init ** 2) - 0.5.
I can't map the above formulate with anything what in your paper.
Can you show me why you use this formulate?
I want to clearly understand for bayesian neural network. So, i read each page in your paper and implement in your code. But i find something which do not map between them.
Please help me! :(.
Thanks

Hi,
This is how the KL divergence is calculated: https://stats.stackexchange.com/questions/7440/kl-divergence-between-two-univariate-gaussians
Hope this helps.

Thank for your answer very much. I already understand.
This mean you chosse distribution of prior as N(0,0.05).
You have a great paper.


Add test for ReadStateModB to exclude parameters

Need a test for ReadStateModB to exclude data types (parameters).  The functionality is not working properly.

I added a test.  Close this issue.


Revert "Added more test coverage for portmapper package."

This reverts commit 1d342509505b7f46b27d4c235c74319b519bd3e9.
(But retains the newly added & useful UDP test)
We need to identify the root-cause of how this never failed earlier.
Considering the fact that userland proxy is being deprecated, it is okay to revert to unblock folks.
Fixes #189
Signed-off-by: Madhu Venugopal<EMAIL_ADDRESS>

Tests failed :D

@LK4D4 yep. :) pushing a new change shortly

LGTM


Track Usage of UMCCRise (Mem and CPU usage)

Track usage of UMCCRise, running a standard HiMem Medium (16 CPU and 128 GB of memory), could this be smaller?

Scripts
get_usage_for_workflows.sh

Details
#!/usr/bin/env bash

set -euo pipefail

# Inputs
workflow_name_prefix="$1"
step_name="$2"
image_name="$3"
title_prefix="$4"
output_prefix="$5"

# Globals
MAX_ITEMS=0  # All workflows, all tasks

# Declare arrays
declare WORKFLOW_ARRAY
declare TASK_ARRAY
declare FILTERED_TASK_ARRAY

# Part 1
echo "Part 1 - get workflow list" 1>&2

# Get workflow list
readarray -t WORKFLOW_ARRAY <<< "$( \
  ica workflows runs list \
    --max-items="${MAX_ITEMS}" \
    --output-format json | \
  jq --raw-output \
    --arg workflow_name_prefix "${workflow_name_prefix}" \
    '
      .items |
      map(
        select(
          .name | startswith($workflow_name_prefix)
        )
      ) |
      map(.id) |
      .[]
    ' \
)"

# Part 2
echo "Part 2 - get tasks of interest from list of workflows" 1>&2
# Get tasks of interest from workflow id list
readarray -t TASK_ARRAY <<< "$( \
  for ica_workflow_run_id in "${WORKFLOW_ARRAY[@]}"; do
    ica-get-tasks-from-workflow-history \
      --ica-workflow-run-id "${ica_workflow_run_id}" | \
    jq --raw-output \
      --arg step_name "${step_name}" \
      '
        .[$step_name] |
        .task_id
      '
  done \
)"

# Part 3
echo "Part 3 - filter tasks to those of a specific image" 1>&2
# Filter tasks from lists
readarray -t FILTERED_TASK_ARRAY <<< "$( \
  for task_id in "${TASK_ARRAY[@]}"; do
    ica tasks runs get "${task_id}" \
      --output-format=json | \
    jq --raw-output \
      --arg image_name "${image_name}" \
      '
        if .execution.image.name == $image_name then
          .id
        else
          empty
        end
      '
  done
)"

# Convert to list of strings, truncate off last comma
filtered_task_str="$( \
  printf '%s,' "${FILTERED_TASK_ARRAY[@]}" | \
  sed 's/,$//g' \
)"

# Part 4
echo "Part 4 - ica plot tasks pod metrics" 1>&2
mkdir -p "$(dirname "${output_prefix}")"
cd "$(dirname "${output_prefix}")"
ica-plot-tasks-pod-metrics \
  --ica-tasks-list "${filtered_task_str}" \
  --output-prefix "$(basename "${output_prefix}")" \
  --title-prefix "${title_prefix}"

run_script.sh

Details
( \
  "./scripts/get_usage_for_workflows.sh" \
    "umccr__automated__umccrise" \
    "/run_umccrise_pipeline_step" \
    "843407916570.dkr.ecr.ap-southeast-2.amazonaws.com/umccrise:2.2.0-fcef79d982" \
    "UMCCRise" \
    "plots/umccrise/umccrise" \
)

Plots
CPU

MEM

Conclusion
CPU is being over-allocated by a factor of 1X.
Expected Max CPU Usage for all umccrise tasks is 14
Highest observed Max CPU Usage for all umccrise tasks is 16.
Memory is being over-allocated by a factor of 1.2X.
Expected Max Mem Usage for all umccrise tasks is 100 Gb.
Highest observed Max Mem Usage for all umccrise tasks is 116 Gb.
From the compute-types reference list
Standard HiMem-Medium (16 CPU, 128 Gb) is the most appropriate choice for this task.


GpuAcc: only the last created TFLite interpreter/delegate works fine

We're trying to integrate ARM NN into our Android C++ project. We want to start with the TFLite delegate path.
The key issue here is that if you create multiple TFLite interpreters with ARM NN GpuAcc delegate. store them first and try to execute them later, only the last created interpreter works fine. We were able to reproduce that even when creating two interpreters from the same model file. CpuAcc delegates work fine.
Here is a diff with modifications that need to be applied to armnn/tests/ExecuteNetwork/ExecuteNetwork.cpp (base armnn revision: d625f5e).  This tiny change makes ExecuteNetwork create and run two Executors instead of one.
We were able to achieve the same result using an SSD detector from Mediapipe: https://storage.googleapis.com/mediapipe-assets/ssdlite_object_detection.tflite.
The built modified ExecuteNetwork exec is deployed along with its standard dependencies and the TFLite model file, run on an Android device using ./ExecuteNetwork -m ssdlite_object_detection.tflite -c GpuAcc -T delegate and yields ERROR: Node number <number> (TfLiteArmNnDelegate) failed to invoke. model invocation error for the first Executor.

Hi @kalesony
thank you for reporting this issue, I'm trying to recreate it now and hope to have some information soon.
Best regards,
Mike

Hi @kalesony
I was able to recreate the issue, the root of the problem is that the two Executors use two different armnn_delegates which in turn use two different IRuntime's and somehow that's causing the earlier Executors to clear something in OpenCL Context so that the CL Workloads return the following (the Model's execution does not bomb out when using the delegate but it does abort with an error when using our TFLite parser):
Error: An error occurred attempting to execute a workload: CL error: clEnqueueNDRangeKernel. Error code: -34 at function Execute [/home/mickel01/devr/devenv/armnn/src/backends/cl/workloads/ClConvolution2dWorkload.cpp:158

Error code 34 is CL_INVALID_CONTEXT. I'm currently looking at the lifecycle of the IRuntime's being used and trying to figure out the best way of not having this happen.
Best regards,
Mike

Hey @MikeJKelly
Yes, it works now, thanks a lot :).


Optimize Compilation (e.g. replace or shrink external libraries like "pandas")

Need to understand the use case in order to assess priority. What will the effect of this be?

-Not affecting the end user
-only relevant during compilation
-resulting in bigger file size
-might end up using it when functionality of export is implemented


add unit test and CI-test

Welcome to Codecov :tada:
Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


Small typo and missing status in attachment example

Hi 👋  I was going through the documentation, and I noticed a couple of things:

The attachment here does not have a status field? (solved: was not checking for attachment.type === 'localAttachment')
Typo: missing closing parentheses ) at the end to close the map function.

https://github.com/liveblocks/liveblocks/blob/d00b709c446882e3c3d9e2fa9f38333177da1b5f/docs/pages/api-reference/liveblocks-react-ui.mdx?plain=1#L1498-L1501
Thanks for the great work!

Oh I see now in the types that CommentAttachment doesn't but CommentLocalAttachment does define status, that's why I was not seing it.
declare type CommentMixedAttachment = CommentAttachment | CommentLocalAttachment;

Ah, great – thanks for catching that typo, @PabloCorso – we'll get that fixed 🙏. Feel free to re-open this PR if you have any follow-up questions about the types, but it sounds like you figured it out!