Scheduler crash when returning from interrupt to blocked task (IDFGH-8270)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
v4.4.2
Operating System used.
Linux
How did you build your project?
Command line with idf.py
If you are using Windows, please specify command line type.
No response
Development Kit.
ESP32_DevKitC_v4
Power Supply used.
USB
What is the expected behavior?
When an interrupt returns and the highest-priority task is blocked I expect the idle task to be scheduled instead.
What is the actual behavior?
Various kinds of crash, including:
Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.

Core  0 register dump:
PC      : 0x40086495  PS      : 0x00060033  A0      : 0x80086d61  A1      : 0x3ffb6c30
0x40086495: taskSelectHighestPriorityTaskSMP at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/tasks.c:3423

A2      : 0x00000000  A3      : 0x00000000  A4      : 0x00000000  A5      : 0x3ffb26ac
A6      : 0x00000001  A7      : 0x3ffb26b4  A8      : 0x00000002  A9      : 0x3ffb68dc
A10     : 0x3ffb28a0  A11     : 0x0000001b  A12     : 0x0000001b  A13     : 0x00000000
A14     : 0x0000000f  A15     : 0x3ffb0b50  SAR     : 0x00000004  EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000063  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xffffffff

Backtrace:0x40086492:0x3ffb6c300x40086d5e:0x3ffb6c50 0x40085480:0x3ffb6c70 0x40085432:0xa5a5a5a5  |<-CORRUPTED
0x40086492: taskSelectHighestPriorityTaskSMP at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/tasks.c:3409 (discriminator 1)

0x40086d5e: vTaskSwitchContext at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/tasks.c:3519 (discriminator 3)

0x40085480: _frxt_dispatch at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/port/xtensa/portasm.S:436

0x40085432: _frxt_int_exit at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/port/xtensa/portasm.S:231

Note that I've seen this manifest in many different ways depending on the exact code used to trigger the condition.
Steps to reproduce.
The following code will demonstrate the issue:
#include <stdio.h>
#include "driver/timer.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include <esp_log.h>

// Handle for the tick-counting task
TaskHandle_t TickCounter;

// Running tally of our timer tick count
uint32_t NumTicks;

static bool IRAM_ATTR TimerCallback(void *Arg)
{
	// Alert the other task
	BaseType_t TaskAwoken = pdFALSE;
	xTaskNotifyFromISR(TickCounter, 0, eSetValueWithOverwrite, &TaskAwoken);
	return (TaskAwoken == pdTRUE);
}

void IRAM_ATTR CountTicks(void *Parameter)
{
	while(1)
	{
		// Wait for a notification
		uint32_t NotifyValue;
		xTaskNotifyWait(0, 0, &NotifyValue, portMAX_DELAY);

		// Count ticks and display every 1000
		NumTicks++;
		if ((NumTicks % 1000) == 0)
		{
			printf("%u ticks (HandlePackets)\n", NumTicks);
		}
	}
}

void app_main(void)
{
	NumTicks = 0;

	// Create a task to handle counting ticks
	int Ret = xTaskCreate(CountTicks, "CountTicks", 1024, 0, 15, &TickCounter);
	if (Ret != pdPASS)
	{
		ESP_LOGE("system", "Cannot start tick counter thread, error %d!", Ret);
		while (1) {}
	}

	// And set up a timer to fire off tick events
	timer_config_t TimerConfig =
	{
		.divider = 8,
		.counter_dir = TIMER_COUNT_UP,
		.counter_en = TIMER_PAUSE,
		.alarm_en = TIMER_ALARM_EN,
		.auto_reload = true
	};
	ESP_ERROR_CHECK(timer_init(TIMER_GROUP_0, 0, &TimerConfig));
	ESP_ERROR_CHECK(timer_set_counter_value(TIMER_GROUP_0, 0, 0));
	ESP_ERROR_CHECK(timer_set_alarm_value(TIMER_GROUP_0, 0, 10000));
	ESP_ERROR_CHECK(timer_enable_intr(TIMER_GROUP_0, 0));
	ESP_ERROR_CHECK(timer_isr_callback_add(TIMER_GROUP_0, 0, TimerCallback, (void *)0, ESP_INTR_FLAG_LEVEL3));
	ESP_ERROR_CHECK(timer_start(TIMER_GROUP_0, 0));

	// Display the tick count
	while (1)
	{
		vTaskDelay(100 / portTICK_PERIOD_MS);
		printf("%u ticks (app_main)\n", NumTicks);
	}
}

Debug Logs.
ELF file SHA256: 818dfa06e404ef20

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:6660
load:0x40078000,len:14848
ho 0 tail 12 room 4
load:0x40080400,len:3792
0x40080400: _init at ??:?

entry 0x40080694
I (29) boot: ESP-IDF v4.4.2 2nd stage bootloader
I (29) boot: compile time 12:43:20
I (29) boot: chip revision: 1
I (32) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (39) boot.esp32: SPI Speed      : 40MHz
I (43) boot.esp32: SPI Mode       : DIO
I (48) boot.esp32: SPI Flash Size : 2MB
I (52) boot: Enabling RNG early entropy source...
I (58) boot: Partition Table:
I (61) boot: ## Label            Usage          Type ST Offset   Length
I (69) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (76) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (84) boot:  2 factory          factory app      00 00 00010000 00100000
I (91) boot: End of partition table
I (95) boot_comm: chip revision: 1, min. application chip revision: 0
I (102) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=07d0ch ( 32012) map
I (123) esp_image: segment 1: paddr=00017d34 vaddr=3ffb0000 size=02350h (  9040) load
I (126) esp_image: segment 2: paddr=0001a08c vaddr=40080000 size=05f8ch ( 24460) load
I (140) esp_image: segment 3: paddr=00020020 vaddr=400d0020 size=153f8h ( 87032) map
I (172) esp_image: segment 4: paddr=00035420 vaddr=40085f8c size=05850h ( 22608) load
I (182) esp_image: segment 5: paddr=0003ac78 vaddr=50000000 size=00010h (    16) load
I (188) boot: Loaded app from partition at offset 0x10000
I (188) boot: Disabling RNG early entropy source...
I (203) cpu_start: Pro cpu up.
I (203) cpu_start: Starting app cpu, entry point is 0x40081038
0x40081038: call_start_cpu1 at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/esp_system/port/cpu_start.c:160

I (189) cpu_start: App cpu up.
I (217) cpu_start: Pro cpu start user code
I (217) cpu_start: cpu freq: 160000000
I (217) cpu_start: Application information:
I (222) cpu_start: Project name:     timer_group
I (227) cpu_start: App version:      1
I (232) cpu_start: Compile time:     Sep  8 2022 12:43:47
I (238) cpu_start: ELF file SHA256:  818dfa06e404ef20...
I (244) cpu_start: ESP-IDF:          v4.4.2
I (249) heap_init: Initializing. RAM available for dynamic allocation:
I (256) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (262) heap_init: At 3FFB2C58 len 0002D3A8 (180 KiB): DRAM
I (268) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (274) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (281) heap_init: At 4008B7DC len 00014824 (82 KiB): IRAM
I (288) spi_flash: detected chip: generic
I (292) spi_flash: flash io: dio
W (296) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (310) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
94 ticks (app_main)
194 ticks (app_main)
294 ticks (app_main)
394 ticks (app_main)
494 ticks (app_main)
594 ticks (app_main)
694 ticks (app_main)
794 ticks (app_main)
894 ticks (app_main)
994 ticks (app_main)
1000 ticks (HandlePackets)
Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.

Core  0 register dump:
PC      : 0x40086495  PS      : 0x00060033  A0      : 0x80086d61  A1      : 0x3ffb6c30
0x40086495: taskSelectHighestPriorityTaskSMP at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/tasks.c:3423

A2      : 0x00000000  A3      : 0x00000000  A4      : 0x00000000  A5      : 0x3ffb26ac
A6      : 0x00000001  A7      : 0x3ffb26b4  A8      : 0x00000002  A9      : 0x3ffb68dc
A10     : 0x3ffb28a0  A11     : 0x0000001b  A12     : 0x0000001b  A13     : 0x00000000
A14     : 0x0000000f  A15     : 0x3ffb0b50  SAR     : 0x00000004  EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000063  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xffffffff

Backtrace:0x40086492:0x3ffb6c300x40086d5e:0x3ffb6c50 0x40085480:0x3ffb6c70 0x40085432:0xa5a5a5a5  |<-CORRUPTED
0x40086492: taskSelectHighestPriorityTaskSMP at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/tasks.c:3409 (discriminator 1)

0x40086d5e: vTaskSwitchContext at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/tasks.c:3519 (discriminator 3)

0x40085480: _frxt_dispatch at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/port/xtensa/portasm.S:436

0x40085432: _frxt_int_exit at /home/kpaget/Documents/Code/TypeCFuzzer/Tests/esp-idf-v4.4.2/components/freertos/port/xtensa/portasm.S:231

The first few printf() lines show that the interrupt and tick counter are working as intended, but the moment that the high-priority task (CountTicks) is blocked by its call to printf() the scheduler crashes and the system resets.

More Information.
This is a minimal reproduction of an issue that I first noticed in a much more complex codebase, using an NMI-level interrupt to decode an edge-timed protocol.

When the NMI is triggered by an edge it enables a timer interrupt with a short delay
Each time the NMI fires it resets the countdown on the timer
When the timer interrupt fires it assumes that the end of the packet has been reached; it then disables the NMI and notifies a higher-level processing task to parse the received data.
If the higher-level task is blocked (such as by a call to printf() or ESP_LOGx()) then the scheduler locks up; the NMI continues to fire but eventually the TWDT resets the system with a failure address on the "rfi 7" instruction in the NMI handler since it never manages to schedule any other task (including the idle task) after the NMI.

I have a few different reproductions of this failure which manifest as different error reports, but all triggered by the same condition (returning from an interrupt to a high-priority task that is blocked). I can share some but not all of these codebases, so when you have a potential fix please let me know and I will test against all the manifestations of this issue to make sure it applies to all of them.

xTaskNotifyFromISR(TickCounter, 0, eSetValueWithOverwrite, &TaskAwoken);

Bad parameter.
 BaseType_t xTaskNotifyIndexedFromISR( TaskHandle_t xTaskToNotify,
                                       UBaseType_t uxIndexToNotify,
                                       uint32_t ulValue,
                                       eNotifyAction eAction,
                                       BaseType_t *pxHigherPriorityTaskWoken );

ESP-IDF v4.4.1-405-g6c5fb29c2c worked with just this change.
    //int Ret = xTaskCreate(CountTicks, "CountTicks", 1024, 0, 15, &TickCounter);
    int Ret = xTaskCreate(CountTicks, "CountTicks", 1024*2, 0, 15, &TickCounter);

@Dazza0
ESP-IDF v4.4.1-405-g6c5fb29c2c worked with just this change.
    //int Ret = xTaskCreate(CountTicks, "CountTicks", 1024, 0, 15, &TickCounter);
    int Ret = xTaskCreate(CountTicks, "CountTicks", 1024*2, 0, 15, &TickCounter);

@kristinpaget I've been able to recreate the issue locally. This looks like a stack overflow issue. Could you please try increasing the stack size from 1024 to something large (like 4096)?


Mention that device_id 0 is a normal device_id in P4Runtime v1.x

This PR does not change the spec, only the side document with notes on P4Runtime API id values.


AWS S3 assume role

I need some clarification on a S3 backed registry.
I use a S3 backed registry authenticated through ec2 instance role.
Is it possible to use a foreign S3 bucket, which is only accessible through "assume role"? If I do the "sts assume-role" manually I can access the bucket manually. But do the instance role somehow incorporate the role to assume automatically? Or is something needed within AWS SDK to do this?
https://github.com/docker/distribution/issues/917 let me guess that it should work but the registry fails with s3aws: NoCredentialProviders: no valid providers in chain. Deprecated.
I used g7a09723 because of https://github.com/docker/distribution/issues/1937 didn't make it into 2.6.0.

This has been addressed by https://github.com/distribution/distribution/pull/3245 but it's only available on main branch.

Closing as addressed in the latest release: https://github.com/distribution/distribution/releases/tag/v3.0.0-alpha.1


Reconfigure permissions

The case for docker cp
In the previous iteration of this, I had forgotten about the fact that docker cp exists. In short, we can create the website inside of the container in a separate directory and then use docker cp to copy it over to the host machine when we are finished. The beauty about docker cp is that it does not copy the permissions by default, so the users don't have to deal with a situation where they have a _site folder that they cannot delete because it is owned by root.
Modifying the current process
With the modification of using docker cp, the process would look like this
cd path/to/lesson-site

# User modifies Rmd files

docker run --rm -it --volume ${PWD}:/srv/site -p 4000:4000 zkamvar/carpentries-docker-test
jekyll serve --host <IP_ADDRESS> -d ../_SITE

# Jekyll site is available and waiting.
# If user is satisfied, they open a new shell to copy the docker container
# User exits (CTRL + C) or sends the process to the background (CTRL + Z)

It would be a good idea to have a process that allows people to modify their lessons and have a live update using something like blogdown with jekyll capabilities (though Yihui wrote about this back in 2014, so I don't know how valid this would be: https://jekyll.yihui.org/2014/09/jekyll-with-knitr.html)

This has been addressed via the s6 system among other things :)


It looks ugly.

No offense here, but, the splatter of colors really doesn't look very pleasing; atleast to me and several others I know of.
If you guys agree, I can definitely try to make it look better with a monochromatic color scheme, smooth background and bright buttons and such.

-1
I like Camelia.
On Dec 16, 2011 5:51 PM, "Dhaivat Pandya" <
<EMAIL_ADDRESS>wrote:

No offense here, but, the splatter of colors really doesn't look very
pleasing; atleast to me and several others I know of.
If you guys agree, I can definitely try to make it look better with a
monochromatic color scheme, smooth background and bright buttons and such.

Reply to this email directly or view it on GitHub:
https://github.com/perl6/perl6.org/issues/3

Nothing's wrong with Camelia! In fact, I think the butterfly's a great mascot. I'm saying that the overall "design" of the page is sort of weird and not fitting, atleast to my eyes.

I have no problems with the current design. It's colourful and vibrant, kinda like the Perl 6 community itself.  That said, if you want to make a mockup, go for it, and I'm sure you'll get plenty of feedback from the aforementioned community. :-)

Sure, I'll do a mockup.


Add "background" and "lab strain name" to genotype pages

http://pombase2.aska.gen.nz/genotype/a78d5a33655067b7-genotype-1
(find an example with lab strain name for checking)

related to
https://github.com/pombase/curation/issues/1429

What is the "lab strain name"?  Is that the genotype name from Canto?
The genotype name and background are both shown on the genotype details pages:
http://pombase2.aska.gen.nz/genotype/1bc92c0f892db627-genotype-1
http://pombase2.aska.gen.nz/genotype/9f25f26d17f2ec78-genotype-8
Although the formatting is a bit naff.

yes thats the one.
If we do  https://github.com/pombase/canto/issues/1321
So deltaCCPR would be a synonym of cig2Δ cig1Δ puc1Δ rem1Δ
but the "other name" is there so we can close this...

We'll open a ticket later if we change things...


A Comprehensive User Onboarding Guide

Description of the feature request:
A comprehensive user onboarding guide designed to help new users quickly understand and start using the Google Gemini API. This guide should cover all necessary steps from account setup to making the first API call, including detailed explanations, screenshots, and troubleshooting tips.
What problem are you trying to solve with this feature?
The current documentation provides excellent individual pieces of information but lacks a cohesive, step-by-step onboarding experience for new users. Beginners might find it challenging to piece together all necessary steps from scattered documents. A unified onboarding guide would streamline the initial setup process, reduce confusion, and enhance the user experience by providing a clear, structured path from start to finish. I am a new user and I actually had issues connecting the pieces
Any other information you'd like to share?
The onboarding guide should include:
•	Account Setup: Instructions for creating a Google account if the user does not have one.
•	API Key Creation: Step-by-step guide on how to create and manage API keys in the Google AI Studio.
•	Environment Setup: Detailed instructions on setting up the development environment, including installing necessary software and dependencies.
•	First API Call: A simple tutorial on making the first API call, with explanations of each step and expected outcomes.
•	Common Errors and Troubleshooting: A section dedicated to common issues users might encounter during the setup and how to resolve them.
•	Next Steps: Suggestions for further reading and advanced tutorials to continue learning.

Providing this comprehensive onboarding guide will significantly improve the initial user experience, making it easier for new users like me to get started with the Google Gemini API and encouraging more widespread adoption of the platform.

Have you looked through our Quickstart guide on the website?
Is there something specific you expect that isn't there, that can be delivered by this cookbook repo?


Added Atonomi (ATMI) contract-map.json entry

Website: https://atonomi.io
Email<EMAIL_ADDRESS>GitHub: https://github.com/atonomi
Twitter: https://twitter.com/atonomi
Telegram: https://t.me/atonomi_io
LinkedIn: https://www.linkedin.com/company/atonomi/
Facebook: https://www.facebook.com/atonomi/
YouTube: https://www.youtube.com/c/Atonomi

Please provide additional details per the latest submission guidelines, and re-submit when ready.

[ ] Must have a 'NEUTRAL' reputation or 'OK' reputation on Etherscan.

Closing this due to inactivity, feel free to reopen. In addition we implemented a new feature called watchAsset I recommend you to use it, with this you could suggest your users to track your token.


Support Mail::queue change to use the factory provider by implementing Factory

5.3 changed the interface requirements for Mailer when using queued mail, and requires Queue\Factory. This fulfills the interface.
I'm not certain about my return value in connection, feedback appreciated.

https://github.com/laravel/framework/commit/ed6e67ae18b6d3f34dd2fbc3d5747ef5dab6d16a is the commit that changed from Queue\Queue to Queue\Factory.

@dustindoiron I can't find any drivers that implement Queue\Factory. I guess adding Queueable to your Mailable class will probably solve your issue?


add tabby.nvim integration (colors)

https://github.com/nanozuki/tabby.nvim

What colors are missing? Catppuccin already has needed colors TabLine, TabLineFill, TabLineSel 🙂


Add ability to scan for hashes of vulnerable .class files

See my answer on https://serverfault.com/a/1086290/188737
This is a bit roughshod, did a minimal test with a couple of jar files. File vulnerable.hashes with sha256 hashes in hex format, ordered, one per line has to be provided.

Could you please add three things:

an automatic download of the ./vulnerable.hashes
an OK message if nothing is found
a line in the README that explains this feature

I have added the option of downloading a checksum file.  I did not include an actual URL, this exercise is left to the reader, as they say. And added the OK message and line in the README.

I did not include an actual URL, this exercise is left to the reader, as they say

Why did you not include a URL? I didn't find anythint where "they say" we shouldnt?


Line and line number context menus should have an entry "Set/Clear Breakpoint   F12"

From<EMAIL_ADDRESS>on 2015-01-21T07:13:18Z
Setting/clearing a breakpoint via double click on the line number is difficult to discover. So there should also be a corresponding context menu entry.
(I am using Spyder 2.3.2 via WinPython.)
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=2127

From ccordoba12 on 2015-01-30T14:05:25Z
Status: Accepted
Labels: Cat-Debugger MS-v2.3.4

@goanpeca, could you take care of this one? I mean, given that you've worked with the line number area :-)

Got it!

@ccordoba12

@ccordoba12
In what part do you think it would be best to introduce the breakpoint context? On top? or?

"Go to line..." should stay first, I'd put the breakpoint options right after it.
I'm not sure if the other options are that useful here, but there is no harm in keeping them since the menu is quite short.

:+1:

@nodd, could we work in improving the options displayed here?
I think the context menu in the linenumber should be specific to the line number. All those other options make no real sense there....

I'd just keep "Go to line" and set/clear breakpoints, these are the only line-related options.
We could add:

Remove the Line (Ctrl+D)
Run the line if there is already an option for this, I don't remember
Run cell (since cell markers are displayed in the line number area). There are many of them, like run and go to next cell (I don't know since a never use them)

That's all I can think of right now.

@Nodd awesome thanks for the feedback.


XS✔ ◾ [docs] Update _sidebar.md

❌ Add a description.

@mustafaStakater Image is available for testing. docker pull stakater/workshop-exercise:SNAPSHOT-PR-154-105e27bc

@mustafaStakater Image is available for testing. docker pull stakater/workshop-exercise:SNAPSHOT-PR-154-7dc7d3ab

@mustafaStakater Image is available for testing. docker pull stakater/workshop-exercise:SNAPSHOT-PR-154-351bcb1c

@mustafaStakater Image is available for testing. docker pull stakater/workshop-exercise:SNAPSHOT-PR-154-9529251f

@mustafaStakater Image is available for testing. docker pull stakater/workshop-exercise:SNAPSHOT-PR-154-458758e9


Maximum call stack size exceeded

fixed https://github.com/Julusian/companion-remote/releases/tag/v0.2.2


Bulk Extension support

Any chance of support for Bulk extensions?
http://jsonapi.org/extensions/bulk/

There's also some chatter about extensions in #40. I think the same response I gave there applied to this inquiry.


Update to use hooks

removes deprecated react lifecycles
update all dependencies

It exports both the new useMailCheck hook and also old that MailCheck that uses render prop (which internally now uses the same useMailCheck hook.)

Thanks @michaltk! Can you update the readme as well?

Was going to leave that to your expertise…

update all dependencies

Really babel is not updated to the latest.. v7 babel deps are @babel/..
but the presets you are using are deprecated on v7, so was thinking to change to use https://github.com/palmerhq/tsdx perhaps.

Was going to leave that to your expertise…

Do you not know me? 😜

the presets you are using are deprecated on v7

Are there equivalents that are compatible?

was thinking to change to use https://github.com/palmerhq/tsdx

I'm fine with that.

Can we merge this? I am getting a warning about the componentWillMount() method that it's still being used.

Updated with hooks here: https://github.com/qualitybath/use-mailcheck

I'm surprised this isn't merged yet. I copied the code directly into my project


update list of fully implemented instruction sets

Good catch, I'll split out CRC32 separately since our SSE4.2 support is incomplete.
And https://github.com/simd-everywhere/implementation-status/blob/main/x86.md#vpclmulqdq is implemented, so I'll add it to the list
Happy to have new issues for AVX512-VAES, SSE4a, FMA4 and others, sure. Please double check https://github.com/simd-everywhere/implementation-status/blob/main/x86.md in case it is already done, but not documented.
If you or your collaborators are interested in implementing some of these, we can have a video call where I can walk you through adding a new intrinsic implementation.

SSE Implemented: 239 of 241 (99.17%), but listed on the main page as complete
AVX Implemented: 296 of 298 (99.33%), but listed on the main page as complete

See https://github.com/simd-everywhere/simde?tab=readme-ov-file#caveats
Please create issues or PRs for the others, thanks!


Improving SEO for plugin api pages

This changes all of our canonical links in docs to point to the pages at latest if available. It also adds redirects for all old versions of plugin pages to the current READMEs so that they can use the canonical link improvements as well. As a bonus, the "click here for latest" link will work for those pages too.
One caveat: non-English URLs will get 404s when going to latest. We need to copy over the READMEs for languages other than English, which should hopefully be done when we pull from crowdin next.
I might need to test this before deploying. It's tough to test redirects, though.

@nikhilkh @rakatyal take a look

LGTM.

👍


Using a different QUIC implementation

I know that quic-go is the preferred solution here as they both share the same language. But I feel like that it would be a good idea to open up this application for allowing other QUIC implementations in its roots. e.g. we could then toy around with MsQuic which already supports connection migration or be able to switch over to a different stack that might become the reference implementation in the future.
i'm not fully sure how feasible that is but I just wanted to throw that idea into the pool and maybe get some feedback on it ^^

I would love being able to switch between QUIC/H3 stacks as I have already been playing a lot with Cloudflare's quiche in the past years, but we would need a good abstraction in front of all these different QUIC implems.
I have no good idea on how to achieve that in a reasonable amount of time and effort, as it would imply building that abstraction layer and binding it to the different implementations.
The only other stack that looks reachable is the recent QUIC implementation from Golang's team, but the implem is still at an early stage.

I would assume, that due to the multitude of different QUIC implementations on the market, somebody must have written an abstraction layer before. If we can find one that works, we could use that as a template.


Toggling VCM from the settings requires running PT as admin

We should try registering the module in HKCU to avoid this requirement.

That would make #14089 obsolete, right?

That task tracks UI improvements, this one is removing admin requirement altogether if possible.

Have we verified this is possible?  This could just be a side effect of the installer work or still not possible

Yes, unfortunately it's not possible using official APIs, since IFilterMapper2::RegisterFilter requires elevation to run.


Removed unused import from docs

Checklist

Issue number for this PR: #nnn (required)
Docs included?: (yes/no; required for all API/functional changes)
Test units included?: (yes/no; required)
In a clean directory, npm install, npm run build, and npm test run successfully? (yes/no; required)

Description

Code sample

Thanks @crisz!


Add Email Notification Support

Story:

As a CSXL developer, I want an API to send email notifications, so my features can bring users back to the app more intentionally.

Example use cases:

Workshop leads blasting notifications / updates to registered members
Student orgs being notified of member join requests
Student orgs blasting notifications to members
CSXL email updates to students and members of the community

As noted by @KrisJordan in the 523 project idea, this might also be doable - perhaps also using AWS.


Move results to the right side panel.

It would be better to put the query result to the right side, in a panel, just like the Google does. Like this

Hi @Explorare
Thank you so much for your suggestion! I'm unsatisfied with the current UIUX and I'm thinking of how to improve it.
My current js implement is too hacky, and I'm thinking of refactoring it. After that, I will be able to adopt a better UI

@Explorare Sorry for my late update. After some refactor work, I'm planning to add an experimental layout (facilitate the right side of Google).
However, the DOM tree of google.com is quite confusing to me, and I have no idea of how to insert a DOM element into that area now.
Do you know if there is any open-source browser extension or GreaseMonkey Script which is utilizing that area?
Thank you

I didn't find a script to modify the right side panel, but found this
搜索引擎切换器 / Search Engine Switcher
It adds a left panel.
Thanks for your effort on this plugin.

I didn't find a script to modify the right side panel, but found this 搜索引擎切换器 / Search Engine Switcher
It adds a left panel.
Thanks for your effort on this plugin.

Thank you. I'll have a look

I added an experimental layout

One can check the Experimental Layout in extension setting

0.0.13 version has been approved by Mozilla  https://addons.mozilla.org/en-CA/firefox/addon/fireseqsearch/versions/

In extension setting, check Experimental Layout, then refresh the page, the fireSeqSearch box should appear at right
I'll close this issue now, although I'll definitely keep working on the layout. I'm not satisfied with its aesthetics.


Improvement: Managing Secret using kubectl

To manage the uniformity  of the docs changing the password.txt and username.txt to password and username respectively in Decoding the Secret of the task Managing Secret using kubectl.

Hi @bradtopol @tengqm
could you please take a look.
Thanks

/lgtm
/approve


Add support for full processing of helper images in blocks via dask

Duplcate

This more complex than it looks, I reverted the map_blocks call for now.


Support background timers on iOS via NSTimer

This PR is a minimalistic change to RCTTiming that causes it to switch exclusively to NSTimer (i.e., the 'sleep timer') in order to continue triggering timers when the app has moved to the background.
Motivation:
Many people have expressed a desire for background timer support on iOS. (See #1282, #167, and #16493). In our app — a podcast/audio player — we use background timers to ensure that we never lose track of the user's playback position, should the app crash or be terminated by the OS.
The RCTTimer module uses a RN-managed CADisplayLink if the next requested timer is less than a second away; otherwise, it switches to an NSTimer (which is refers to as a 'sleep timer' in source). The RN-managed CADisplayLink is always disabled when the app goes to the background (and thus cannot be used); however, the NSTimer will still issue its callbacks in the background.
This PR adds a flag to track whether the app is in the background, and if so, all timers are routed through NSTimer until the app returns to the foreground. @vishnevskiy at Discord opened a similar PR (#16493) that implements a drop-in for CADisplayLink which falls back to NSTimer, but I decided to incorporate the background-NSTimer logic directly into RCTTimer, since NSTimer is already in use.
~It's worth noting that the background NSTimer may not fire as often as requested — it may give the appearance of lagging depending upon your app's priority in the background. For our audio app, NSTimer fires exactly on schedule if there's an open AVAudioSession and audio is playing; if audio is not playing, it fires about half as often as requested, which is still adequate for networking polling and other tasks.~
It's worth noting that background timers only function as long as an app is actually running in the background. Apple offers a variety of Background Modes (which can be toggled in the Capabilities section of the target inspector in Xcode), and the app will need to be legitimately using one of these modes in order for this change to provide any value — otherwise it will be terminated within a couple of seconds of moving to the background.
The good thing about this change is that for apps that do perform essential computation in support of their Background Mode, they can now use setTimeout and setInterval without problem — whereas in the past, neither would ever trigger their callback until the app returns to the foreground.
Open Question:
~Despite the demand for this timer behavior, it's not clear whether this should be specifically opt-in. There's nothing specifically breaking about this change, but an app that abuses timers may lead to increased battery consumption if they now fire in the background.~
~On the other hand, if we were to make this an opt-in feature, it's not clear how to do it other than to expose a top-level function to toggle it (and that feels hacky and undiscoverable). RN's timers are based upon standard JS functions which cannot have their parameters modified to take additional flags.~
This is no longer a concern due to the fact that the app must have a valid Background Mode, which is already a multi-step opt-in process.
Test Plan:
We've been using this patch in our production app without issue since January 2018.
I've tested on a real iPhone 6 running iOS 10 and a real iPhone 8 running iOS 11. It also functions as expected on various simulators.
To demonstrate the difference, here is a before and after video.

Before
After

Release Notes:
[IOS] [ENHANCEMENT] [Timers] - Support background timers on iOS

Despite the demand for this timer behavior, it's not clear whether this should be specifically opt-in. There's nothing specifically breaking about this change, but an app that abuses timers may lead to increased battery consumption if they now fire in the background.

Not really. Audio apps are something of an exception, as iOS allows you to continue executing code in background. Almost all apps will be suspended within a few moments of being put to background. I'd assume if you're playing in Xcode with background modes, you kind of know what you're doing.
It's still worth pointing it out in the documentation that background behavior of timers may not be strictly relied upon

@jamesreggio can you rebase past bc8d052c0b10285e2a097ca030140a78920c28a5 and 5068dfcad34a79112ba7c0ae67a0ce71b6ab10bd? I'm interested in seeing if this will pass the TimingModuleTest in test_android, but that job is failing due to an issue we already fixed in master.

@jamesreggio Do you know how this compares to android? Also will the timers fire at all if the app does not declare any background modes?

Thanks for the thoughtful replies, everybody.
Upon further inspection, you need to be actively using an approved Background Mode for this to provide any value whatsoever. (Otherwise, the app will be terminated within a couple of seconds of reaching the background, as expected.)
However, this change remains important for apps that legitimately use a Background Mode (like our audio app), because without it, any callbacks supplied to setTimeout or setInterval will fail to trigger until the app returns to the foreground. I've updated the PR description to this effect.
I agree with @radex that there's no need to make this behavior opt-in, given the necessity of opting in to a Background Mode within Xcode. This merely just causes React Native to 'do the right thing' when you're in the background.
@janicduplessis — for apps without any Background Modes, this change will cause timers to fire in the couple of seconds between moving to the background and being suspended, which is still helpful if you're doing anything with a short setTimeout in response to a shift to background. If the timer doesn't trigger before the background suspension occurs, the timer will trigger when the app is returned to the foreground, which is the same behavior that exists today.
In terms of Android, allow me to preface by saying that I'm working off of recollections of Android's timing module from several months ago. However, if I recall correctly, Android requires the use of external libraries to support long-lived or background timers — hence the common YellowBox warning to that effect. In a sense, Android's timer implementation (via Choreographer.postFrameCallback) contains only the CADisplayLink half of the iOS implementation. If Android was modified to support long-lived timers via android.os.Handler.postDelayed plus an appropriate WakeLock, vis-a-vis react-native-background-timer, I think that would be analogous to this change in iOS. However, I don't have the time to take a stab at it right now.
@hramos — I rebased against master just now (and picked up the two commits you mentioned), however tests are still failing. They seem to be spurious, since they're either related to Android (which is unchanged), or related to Metro failures (which are just flaky in the first place). Please advise if you'd like me to rebase again or make further changes.

@jamesreggio they do look unrelated. No need to rebase for now, since these failures are showing up on master as well.

Sounds great, Héctor. I think this is ready to go, then?
On Mon, Sep 24, 2018, 5:44 PM Héctor Ramos<EMAIL_ADDRESS>wrote:

@jamesreggio https://github.com/jamesreggio they do look unrelated. No
need to rebase for now, since these failures are showing up on master as
well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/facebook/react-native/pull/21211#issuecomment-424135516,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAyLve7HFTJeDIrON5dFwV0O94aTTLOaks5ueVJZgaJpZM4Ww-MP
.

(@hramos — sorry, didn't remember your handle to @-mention you from my email reply.)
I think this is ready to go. Let me know if there is anything else you need on my end.

Hi again — this is ready to go. @hramos, do you mind initiating Facebook import, or letting me know whether any unresolved objections remain? I'd like to field them before I lose familiarity with these systems.

Hi @jamesreggio and @hramos - is any update available on the status of this PR and if it can be merged for an upcoming release?
We are using React Native to develop an app which makes heavy use of dynamic background audio, and this patch is a huge quality-of-life improvement for our customers - so much so that we are manually applying this patch in our XCode / iOS buildflow as a workaround in the meantime.
Thanks for your work on this!

Hi @jamesreggio - we're in final testing for our release including this patch (applied manually), and it appears to be causing hard crashes in at least a couple of edge cases.
I'm not especially familiar with NSTimer / RCTTiming and their intricacies, but what we are seeing is that the NSRunLoop RCTTiming is scheduling the sleepTimer on is hard-crashing every so often - in particular it seems to happen most often when a system modal is displayed by iOS for permissions (e.g. microphone permissions, contact permissions, notification permissions system dialogs have all triggered it for us - but not 100% of the time).
I've included excerpts from two different crash dumps below.  They both point to line 278, in scheduleSleepTimer, as the culprit:
[[NSRunLoop currentRunLoop] addTimer:_sleepTimer forMode:NSDefaultRunLoopMode];
I've also tried changing this to use NSRunLoopCommonModes but it didn't appear to help.
I know this code wasn't directly changed by your patch, but it seems closely related.  Do you happen to have any thoughts / ideas for us to try?  We'll continue investigating on our side as well.
Thanks!
Crash excerpt 1:
OS Version: iOS 12.0 (16A366)
Report Version: 104

Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: BUS_NOOP at 0x0000000c756b3620
Crashed Thread: 3

Application Specific Information:
Attempted to dereference garbage pointer 0xc756b3620.
Originated at or in a subcall of __cxa_throw

Thread 3 Crashed:
0   libobjc.A.dylib                 0x335c00430         objc_retain
1   CoreFoundation                  0x337761878         __CFBasicHashAddValue
2   CoreFoundation                  0x337760a70         CFBasicHashAddValue
3   CoreFoundation                  0x3376c0e98         CFRunLoopAddTimer
4   OurApp                       0x201124ba8         -[RCTTiming scheduleSleepTimer:] (RCTTiming.m:278)
5   OurApp                       0x201124d84         -[RCTTiming createTimer:duration:jsSchedulingTime:repeats:]
6   CoreFoundation                  0x33773d660         __invoking___
7   CoreFoundation                  0x337619980         -[NSInvocation invoke]
8   CoreFoundation                  0x33761a564         -[NSInvocation invokeWithTarget:]
9   OurApp                       0x201112468         -[RCTModuleMethod invokeWithBridge:module:arguments:] (RCTModuleMethod.mm:550)
10  OurApp                       0x2011592dc         facebook::react::invokeInner(RCTBridge*, RCTModuleData*, unsigned int, folly::dynamic const&) (RCTNativeModule.mm:104)
11  OurApp                       0x201159038         [inlined] operator() (RCTNativeModule.mm:71)
12  OurApp                       0x201159038         ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke (RCTNativeModule.mm:65)
13  OurApp                       0x201158f0c         facebook::react::RCTNativeModule::invoke(unsigned int, folly::dynamic&&, int) (RCTNativeModule.mm:77)
14  OurApp                       0x2011999a4         facebook::react::JsToNativeBridge::callNativeModules(facebook::react::JSExecutor&, folly::dynamic&&, bool) (NativeToJsBridge.cpp:52)
15  OurApp                       0x201194694         facebook::react::JSCExecutor::callNativeModules(facebook::react::Value&&) (JSCExecutor.cpp:557)
16  OurApp                       0x201194acc         [inlined] operator() (JSCExecutor.cpp:620)
17  OurApp                       0x201194acc         facebook::react::JSCExecutor::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, folly::dynamic const&) (JSCExecutor.cpp:606)
18  OurApp                       0x20119adec         std::__1::function<void (facebook::react::JSExecutor*)>::operator()(facebook::react::JSExecutor*) const (functional:1913)
19  OurApp                       0x20110d8b4         facebook::react::tryAndReturnError(std::__1::function<void ()> const&) (RCTCxxUtils.mm:95)
20  OurApp                       0x201103498         facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) (RCTMessageThread.mm:60)
21  CoreFoundation                  0x3376c4408         __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
22  CoreFoundation                  0x3376c3d08         __CFRunLoopDoBlocks
23  CoreFoundation                  0x3376bf220         __CFRunLoopRun
24  CoreFoundation                  0x3376be5b8         CFRunLoopRunSpecific
25  OurApp                       0x2010e427c         +[RCTCxxBridge runRunLoop] (RCTCxxBridge.mm:252)
26  Foundation                      0x338c773b0         __NSThread__start__
27  libsystem_pthread.dylib         0x33707b2fc         _pthread_body
28  libsystem_pthread.dylib         0x33707b25c         _pthread_start

Thread 0
0   libsystem_kernel.dylib          0x336f4fed0         mach_msg_trap
1   libsystem_kernel.dylib          0x336f4f3a8         mach_msg
2   CoreFoundation                  0x3376c3fb0         __CFRunLoopServiceMachPort
3   CoreFoundation                  0x3376bee4c         __CFRunLoopRun
4   CoreFoundation                  0x3376be5b8         CFRunLoopRunSpecific
5   GraphicsServices                0x33bc41584         GSEventRunModal
6   UIKitCore                       0x3905f4558         UIApplicationMain
7   OurApp                       0x200f39ac8         main (main.m:14)
8   libdyld.dylib                   0x336ce4b94         start

Thread 1 name: com.apple.uikit.eventfetch-thread
0   libsystem_kernel.dylib          0x336f4fed0         mach_msg_trap
1   libsystem_kernel.dylib          0x336f4f3a8         mach_msg
2   CoreFoundation                  0x3376c3fb0         __CFRunLoopServiceMachPort
3   CoreFoundation                  0x3376bee4c         __CFRunLoopRun
4   CoreFoundation                  0x3376be5b8         CFRunLoopRunSpecific
5   Foundation                      0x338b446a4         -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
6   Foundation                      0x338b44550         -[NSRunLoop(NSRunLoop) runUntilDate:]
7   UIKitCore                       0x390551ac0         -[UIEventFetcher threadMain]
8   Foundation                      0x338c773b0         __NSThread__start__
9   libsystem_pthread.dylib         0x33707b2fc         _pthread_body
10  libsystem_pthread.dylib         0x33707b25c         _pthread_start

Thread 2
0   libsystem_kernel.dylib          0x336f5bb9c         __workq_kernreturn
1   libsystem_pthread.dylib         0x33707c114         _pthread_wqthread

Crash excerpt 2:
OS Version: iOS 12.0 (16A366)
Report Version: 104

Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: BUS_NOOP at 0x000000035339b7a0
Crashed Thread: 0

Application Specific Information:
Attempted to dereference garbage pointer 0x35339b7a0.
Originated at or in a subcall of __cxa_throw

Thread 0 Crashed:
0   libobjc.A.dylib                 0x335c00430         objc_retain
1   CoreFoundation                  0x337663f2c         _CFArrayReplaceValues
2   CoreFoundation                  0x337664620         CFArrayInsertValueAtIndex
3   CoreFoundation                  0x3376c1018         __CFRepositionTimerInMode
4   CoreFoundation                  0x3376c0f28         CFRunLoopAddTimer
5   OurApp                       0x200c9cba8         -[RCTTiming scheduleSleepTimer:] (RCTTiming.m:278)
6   OurApp                       0x200c9c8c4         -[RCTTiming didUpdateFrame:] (RCTTiming.m:253)
7   OurApp                       0x200c9bcf8         -[_RCTTimingProxy timerDidFire] (RCTTiming.m:89)
8   Foundation                      0x338c785fc         __NSFireTimer
9   CoreFoundation                  0x3376c4bf0         __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
10  CoreFoundation                  0x3376c4920         __CFRunLoopDoTimer
11  CoreFoundation                  0x3376c4154         __CFRunLoopDoTimers
12  CoreFoundation                  0x3376bf030         __CFRunLoopRun
13  CoreFoundation                  0x3376be5b8         CFRunLoopRunSpecific
14  GraphicsServices                0x33bc41584         GSEventRunModal
15  UIKitCore                       0x3905f4558         UIApplicationMain
16  OurApp                       0x200ab1ac8         main (main.m:14)
17  libdyld.dylib                   0x336ce4b94         start

Thread 1 name: com.apple.uikit.eventfetch-thread
0   libsystem_kernel.dylib          0x336f4fed0         mach_msg_trap
1   libsystem_kernel.dylib          0x336f4f3a8         mach_msg
2   CoreFoundation                  0x3376c3fb0         __CFRunLoopServiceMachPort
3   CoreFoundation                  0x3376bee4c         __CFRunLoopRun
4   CoreFoundation                  0x3376be5b8         CFRunLoopRunSpecific
5   Foundation                      0x338b446a4         -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
6   Foundation                      0x338b44550         -[NSRunLoop(NSRunLoop) runUntilDate:]
7   UIKitCore                       0x390551ac0         -[UIEventFetcher threadMain]
8   Foundation                      0x338c773b0         __NSThread__start__
9   libsystem_pthread.dylib         0x33707b2fc         _pthread_body
10  libsystem_pthread.dylib         0x33707b25c         _pthread_start

Thread 2 name: com.facebook.react.JavaScript
0   libsystem_kernel.dylib          0x336f5c964         kevent_id
1   libdispatch.dylib               0x336c20648         _dispatch_kq_poll
2   libdispatch.dylib               0x336c1fbd4         _dispatch_event_loop_poke$VARIANT$mp
3   OurApp                       0x200cd0ec0         facebook::react::RCTNativeModule::invoke(unsigned int, folly::dynamic&&, int) (RCTNativeModule.mm:79)
4   OurApp                       0x200d119a4         facebook::react::JsToNativeBridge::callNativeModules(facebook::react::JSExecutor&, folly::dynamic&&, bool) (NativeToJsBridge.cpp:52)
5   OurApp                       0x200d0c694         facebook::react::JSCExecutor::callNativeModules(facebook::react::Value&&) (JSCExecutor.cpp:557)
6   OurApp                       0x200d0cacc         [inlined] operator() (JSCExecutor.cpp:620)
7   OurApp                       0x200d0cacc         facebook::react::JSCExecutor::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, folly::dynamic const&) (JSCExecutor.cpp:606)
8   OurApp                       0x200d12dec         std::__1::function<void (facebook::react::JSExecutor*)>::operator()(facebook::react::JSExecutor*) const (functional:1913)
9   OurApp                       0x200c858b4         facebook::react::tryAndReturnError(std::__1::function<void ()> const&) (RCTCxxUtils.mm:95)
10  OurApp                       0x200c7b498         facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) (RCTMessageThread.mm:60)
11  CoreFoundation                  0x3376c4408         __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
12  CoreFoundation                  0x3376c3d08         __CFRunLoopDoBlocks
13  CoreFoundation                  0x3376bf220         __CFRunLoopRun
14  CoreFoundation                  0x3376be5b8         CFRunLoopRunSpecific
15  OurApp                       0x200c5c27c         +[RCTCxxBridge runRunLoop] (RCTCxxBridge.mm:252)
16  Foundation                      0x338c773b0         __NSThread__start__
17  libsystem_pthread.dylib         0x33707b2fc         _pthread_body
18  libsystem_pthread.dylib         0x33707b25c         _pthread_start

Quick update - we managed to eliminate the most common / egregious crashes by changing scheduleSleepTimer to use a lock / synchronize to be more thread-safe:
- (void)scheduleSleepTimer:(NSDate *)sleepTarget
{
  @synchronized (self) {
    if (!_sleepTimer || !_sleepTimer.valid) {
      _sleepTimer = [[NSTimer alloc] initWithFireDate:sleepTarget
                                            interval:0
                                              target:[_RCTTimingProxy proxyWithTarget:self]
                                            selector:@selector(timerDidFire)
                                            userInfo:nil
                                              repeats:NO];
      [[NSRunLoop currentRunLoop] addTimer:_sleepTimer forMode:NSDefaultRunLoopMode];
    } else {
      _sleepTimer.fireDate = [_sleepTimer.fireDate earlierDate:sleepTarget];
    }
  }
}

Again, my knowledge of this system is quite limited so if anyone here has thoughts on the issue / a better long-term fix please do let me know.  It seems like this might not be the only thread-safety issue that might result from this change, so I'll keep this thread posted on anything else we find once we're live to a larger scale.

We've found one additional crash since launch which appears to be fixed by also @synchronize'ing all _timers accesses.  Let me know if it's helpful to add to your PR branch what we've put together and I'd be happy to do so.
Thanks!

Sorry for the delay. Let's workout whether the changes by @cojo need to be included in this PR, and then I'll import this for further review from our team.

Importing to put it on my queue. I can always re-import to get any additional commits.

Thanks @hramos - if it's helpful, here is the "full patch" file we're applying in our build process internally here at this point to resolve all the crashes we have found so far: react-native-timers.patch - I'm not 100% sure how to integrate these changes with this existing PR but I'm happy to do so.

@jamesreggio hey! Did you have a chance to look at my last comment about adding a manual test case for this?

@jamesreggio @cojo just pinging one more time. Could either of you update this PR so we can actually merge it?

@cpojer If @jamesreggio is unavailable to update the PR, I can set aside some time to apply my changes directly; however, this PR appears to have been opened from a personal fork of his.
My understanding is I would have to PR my changes to his fork first before it would be applied to this PR.  Is that correct?  If so, if he's out of town, that might not work either.  Is there another way for me to apply my changes to this PR or would it be better to open my own PR with the full changeset and reference this PR from there?
Thanks!

Your own PR should be fine.

@hramos @cpojer
Following up on this; per your request I have created PR #23674 which incorporates the crash fixes.  I just noticed your request re: RNTester - I'm not particularly familiar with that part of the project / code but I could take a look if it is required before merging.  Is there a particular test case you have in mind?
Since this is being built directly / "seamlessly" into RCTTiming and will just "work as expected" for background-mode users going forward, the only thing that occurs off the top of my head would be to add an incrementing timer similar to @jamesreggio 's GIF in the original PR description - is that what you had in mind?


Update sofarsolar-g3.yaml for charging battery

Update sofarsolar-g3.yaml for charging battery
regarding Sofar HYD: Battery Control #12220

Tested current release. Battery was loaded!!

Tested current release. Battery was loaded!!

Do you use LSE 3 Stick? If yes which firmware? My stick gets many timeouts.
Greets


Trust icon with number badges uses default font

(See attached screen capture)

I have enabled trust (via the setting)
this morning I have a pending update and it seems that the number uses the default font (I guess because those aren't defined in the codicon font)

ugh this is reproing again, the badge should not be showing both at the same time and its not consistent, investigating

Closing the issue, as the soft notification is being deprecated.


Finalize run hooks

Added task factory create_finalize_run_task_collection() & wired into TaskFactory.parse_tasks().
Tasks can be hooked into finalize processing by:

Writing a task with the following args:

@app.task(bind=True, base=FinalizeRunHookTask)
def my_task(self, new_zip_filepaths=[], run_uid=None):
    return [<list of new files created in this task>]

Then add my_task to create_finalize_run_task_collection's hook_tasks

Coverage decreased (-0.1%) to 81.751% when pulling 12fb9076c258a8c40ca628b389faef128ca01994 on JivanAmara:finalize_hook into d9a83cbacdcaa0d84a07e35f7467dac89a289876 on terranodo:master.

Coverage decreased (-0.1%) to 81.751% when pulling deb2413203479cb2d70d892eea26eb0f718e44b7 on JivanAmara:finalize_hook into d9a83cbacdcaa0d84a07e35f7467dac89a289876 on terranodo:master.

Coverage decreased (-0.1%) to 82.528% when pulling 65da5f586c455dd75181e6029f60d261f89abb73 on JivanAmara:finalize_hook into de67d651e6a26c6f6a5d0a4e549638ab4f623992 on terranodo:master.

Ok, looks like integration tests are good again.  I'll add some tests for the new tasks.

Changes Unknown when pulling cecfca65d75f1dfcffad8240d8e70202596c474a on JivanAmara:finalize_hook into ** on terranodo:master**.

Changes Unknown when pulling cecfca65d75f1dfcffad8240d8e70202596c474a on JivanAmara:finalize_hook into ** on terranodo:master**.

Changes Unknown when pulling 1bbb962becc073b261e2ee1c276951048b82ca17 on JivanAmara:finalize_hook into ** on terranodo:master**.

Changes Unknown when pulling 6d3e06355ac0fe1712b0ffa0b1637349051e5621 on JivanAmara:finalize_hook into ** on terranodo:master**.

Changes Unknown when pulling ffb86b222eb6a40ab955eeecbfa7da1958fb1ce2 on JivanAmara:finalize_hook into ** on terranodo:master**.

Changes Unknown when pulling 656f1f69d737f45f41adb2e3e46bbd152e5710d2 on JivanAmara:finalize_hook into ** on terranodo:master**.


warning: the address of '...' will never be NULL [-Waddress]

Hi guys,
Thanks for the amazing work with cpputest.
When trying to CHECK function pointers, I get a warning. I'm probably doing something wrong but I couldn't really figure out.
Here's my example:
#include "CppUTest/TestHarness.h"

TEST_GROUP(false_warning_tests)
{

};

int function1(int a)
{
	return 0;
}

//Warning
TEST(false_warning_tests, function_pointer_no_variable)
{
	int (*func_ptr)(int);
	func_ptr = function1;
	CHECK_EQUAL(function1, func_ptr);
}

//No warning
TEST(false_warning_tests, function_pointer_with_variable)
{
	int (*func_ptr)(int);
	int (*expected_func_ptr)(int);
	func_ptr = function1;
	expected_func_ptr = function1;
	CHECK_EQUAL(expected_func_ptr, func_ptr);
}

The warning I get is:
"CppUTest/UtestMacros.h:138:71: warning: the address of 'int function1(int)' will never be NULL [-Waddress]"
Any ideas? Or is this an issue?
Thanks!

Is this with the trunk version. Can you share your line in Macro CppUTest/UTestMacros.h:138:71 ?

Yes, I'm on the master branch, cloned a few days ago.
This is what I have on line 138:
UtestShell::getCurrent()->assertEquals(true, StringFrom(expected).asCharString(), StringFrom(actual).asCharString(), text, file, line); \

Ok, I tried on my Mac with gcc and clang, both didn't give the warning. Could you share what compiler and platform you are using ?
(you did have other warnings in the code you copied)

I'm using MinGW64 on Windows10.
This the full build log (running on Eclipse CDT):
10:53:13 **** Rebuild of configuration Debug for project false_warning ****
Info: Configuration "Debug" uses tool-chain "MinGW GCC" that is unsupported on this system, attempting to build anyway.
Info: Internal Builder is used for build
g++ "-IC:\\cpputest\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o false_warning.o "..\\false_warning.cpp"
In file included from C:\cpputest\include/CppUTest/TestHarness.h:40,
                 from C:\cpputest\include/CppUTest/CommandLineTestRunner.h:31,
                 from ..\false_warning.cpp:1:
..\false_warning.cpp: In member function 'virtual void TEST_false_warning_tests_function_pointer_no_variable_Test::testBody()':
C:\cpputest\include/CppUTest/UtestMacros.h:138:71: warning: the address of 'int function1(int)' will never be NULL [-Waddress]
       UtestShell::getCurrent()->assertEquals(true, StringFrom(expected).asCharString(), StringFrom(actual).asCharString(), text, file, line); \
                                                                       ^
C:\cpputest\include/CppUTest/UtestMacros.h:127:3: note: in expansion of macro 'CHECK_EQUAL_LOCATION'
   CHECK_EQUAL_LOCATION(expected, actual, NULLPTR, __FILE__, __LINE__)
   ^~~~~~~~~~~~~~~~~~~~
..\false_warning.cpp:19:2: note: in expansion of macro 'CHECK_EQUAL'
  CHECK_EQUAL(function1, func_ptr);
  ^~~~~~~~~~~
g++ -o false_warning.exe false_warning.o "C:\\cpputest\\src\\CppUTest\\libCppUTest.a" "C:\\cpputest\\src\\CppUTestExt\\libCppUTestExt.a"

10:53:14 Build Finished. 0 errors, 1 warnings. (took 900ms)

And this is my full code:
#include "CppUTest/CommandLineTestRunner.h"
#include "CppUTest/TestHarness.h"

TEST_GROUP(false_warning_tests)
{

};

int function1(int a)
{
	return 0;
}

//Warning
TEST(false_warning_tests, function_pointer_no_variable)
{
	int (*func_ptr)(int);
	func_ptr = function1;
	CHECK_EQUAL(function1, func_ptr);
}

//No warning
TEST(false_warning_tests, function_pointer_with_variable)
{
	int (*func_ptr)(int);
	int (*expected_func_ptr)(int);
	func_ptr = function1;
	expected_func_ptr = function1;
	CHECK_EQUAL(expected_func_ptr, func_ptr);
}

int main(int ac, char** av)
{
    return CommandLineTestRunner::RunAllTests(ac, av);
}

You should use the test macro POINTERS_EQUAL instead of CHECK_EQUAL, and the warning will disappear.

Or FUNCTIONPOINTERS_EQUAL.
Still the warning is strange. I don't see where it comes from and cannot replicate it.

The warning comes from passing a function directly to StringFrom(). Just put SimpleString a = StringFrom(function1); and the warning is emitted (if -Wall is enabled). I've tested that with GCG 7, 8 and 9 in Linux, and same versions of MinGW in Windows. BTW, clang 9 does not give any warning.
The problem here is that when passing a function or function pointer (with a signature different from void(*)()), a C++ compiler shall give more preference to the overload of StringFrom that takes a bool instead of the one that takes a const void * or void(*)(), and as a consequence GCC legitimately warns (since -Werror is activated by -Wall) that the argument will always take the same value (true) since it will never be NULL.
When passing a variable the compiler does not give a warning (even if it still is doing a conversion to bool) because -Werror only applies to functions converted to bool, not to function pointers converted to bool.
Using CHECK_EQUAL to compare pointers is a very bad idea, because if the assertion fails because the pointers are different the error message will moan that it expected  but was , (or  for NULL pointers) which will be very confusing to the user.
Bas, you probably don't see the warning because you are compiling using CppUTest installed in a "standard" place. It seems that GCC ignores that warning if it happens in macros defined in files which are in the "default" include paths (/usr/include, /usr/local/include, etc.). I don't know what these "standard" paths are for MacOS. Anyway, just pass a "-I" option to the compiler with the path to your CppUTest "working" directory and the warning will appear.

Ok. Any good way to solve it, other than saying "don't do that" ?

The only way I can think of avoiding users to misuse CHECK_EQUAL it is to add a C++11 "static_assert" that checks that CHECK_EQUAL is not used with pointers, or some complicated form of template meta-programming to redirect to the proper function.
That would require of course conditional compilation to enable this only if the compiler supports at least C++11.
I know you don't like adding template-related stuff or conditional stuff, but if you want I may give a try.

Nah, don't want to go there. There is no way to make a better matching StringFrom ?

AFAIK with arbitrary function pointers there is no simple way to solve this, because if there is an overload that accepts a bool (as it happens with StringFrom), the conversion to bool will always have preference over a conversion to void(*)() since the function signatures are different, and also over a conversion to const void*. Unfortunately, there is no such think like a "pointer to any function".
Fortunately with other pointers this does not happen because conversion to void* has preference over conversion to bool. In that case void* actually acts as "pointer to anything (except functions)".
Let's see if someone else comes with some idea on how to avoid this.

JFYI (possible "solution" when using modern compilers):
Adding the following to UTestMacros.h:
#if __cplusplus >= 201103L
#define STATIC_ASSERT(condition, message) static_assert(condition, message)
#else
#define STATIC_ASSERT(condition, message)
#endif

Then adding this at the beginning of the CHECK_EQUAL_LOCATION macro:
  STATIC_ASSERT( !std::is_pointer<decltype(actual)>::value && !std::is_pointer<decltype(expected)>::value, \
                 "Don't use CHECK_EQUAL to compare pointers!" ); \

How to write a test for that?

Good point, it's complicated to test compile-time assertions, that would require making a test that actually compiles something, which is an overkill here.
I have however a better option, which is making CppUTest smarter instead of stricter, and is also more testable, and pretty simple:
#if __cplusplus >= 201103L
#define STRING_FROM(expr) \
    (((std::is_pointer<decltype(expr)>::value && std::is_function<std::remove_pointer<decltype(expr)>::type>::value) || \
      std::is_function<decltype(expr)>::value) ? StringFrom((void(*)())(expr)) : StringFrom(expr))
#else
#define STRING_FROM(expr) StringFrom(expr)
#endif

#define CHECK_EQUAL_LOCATION(expected, actual, text, file, line)\
  do { if ((expected) != (actual)) { \
      if ((actual) != (actual)) \
          UtestShell::getCurrent()->print("WARNING:\n\tThe \"Actual Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect.", file, line); \
      if ((expected) != (expected)) \
          UtestShell::getCurrent()->print("WARNING:\n\tThe \"Expected Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect.", file, line); \
      UtestShell::getCurrent()->assertEquals(true, STRING_FROM(expected).asCharString(), STRING_FROM(actual).asCharString(), text, file, line); \
  } \
  else \
  { \
    UtestShell::getCurrent()->assertLongsEqual((long)0, (long)0, NULLPTR, file, line); \
  } } while(0)

The only change done on the original macro is replacing StringFrom with STRING_FROM.

This solution could be applied globally without breaking compatibility to all StringFrom usages by modifying SimpleString:

The current StringFrom functions are renamed to StringFrom_ or StringFormInternal or something like this.
The macro in the previous comment is added to SimpleString.h but renamed to StringFrom (and calling of course the renamed C++ functions).

However, playing devil's advocate, if the smart guys that defined the C++ standards decided that an arbitrary pointer to function is better cast to bool than to const void* or void(*)(), and C++ users know by heart the implicit cast precendences, who are we to change that? ¯\_(ツ)_/¯

I mean, how can we test the assert_static statement ?

If you want to go the compile-time error way, there is AFAIK no way to directly write a test. I can however think of two ways to test that indirectly:

Macro substitution: Don't test static_assert because it cannot be done using "standard" tests (since the test will not compile), but instead using macros replace static_assert or STATIC_ASSERT for something else that gives an error at runtime, like for example #define STATIC_ASSERT(expr) if(!(expr)) { throw 0; }, and then do a test that checks that the exception is thrown.
Compilation: Write a test that launches the C++ compiler to compile an auxiliary test file that should fail, and then check the results of compilation to ensure that the assertion failed. Of course, this is very complicated because the user can be using different compilers (and different versions!), and handling that would be a nightmare. In a project that I'm developing (CppUMockGen) I use LibClang to check that generated code compiles properly, but porting this here is a bit of an overkill.

Another option that can be considered is to always fail at runtime (test-time) instead of at compilation-time, by defining for example #define CPP11_ASSERT(condition, message) if((!condition)) { UtestShell::getCurrent()->fail(message, __FILE__, __LINE__); }.

Update: Just in case someone  wants to test the "silent" automatic selection of the proper StringFrom for functions and pointers to functions, the previous proposal is not good because it will cause warnings. This one is better:
#if __cplusplus >= 201103L
template<bool B, typename T>
struct StringFromWrapper
{
    static SimpleString Call(T v) { return StringFrom(v); };
};
template<typename T>
struct StringFromWrapper<true, T>
{
    static SimpleString Call(T v) { return StringFrom((void(*)())(v)); };
};
#define STRING_FROM(expr) \
    StringFromWrapper<(std::is_pointer<decltype(expr)>::value && std::is_function<std::remove_pointer<decltype(expr)>::type>::value) || \
                      std::is_function<decltype(expr)>::value, decltype(expr)>::Call(expr)
#else
#define STRING_FROM(expr) StringFrom(expr)
#endif

#define CHECK_EQUAL_LOCATION(expected, actual, text, file, line)\
  do { if ((expected) != (actual)) { \
      if ((actual) != (actual)) \
          UtestShell::getCurrent()->print("WARNING:\n\tThe \"Actual Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect.", file, line); \
      if ((expected) != (expected)) \
          UtestShell::getCurrent()->print("WARNING:\n\tThe \"Expected Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect.", file, line); \
      UtestShell::getCurrent()->assertEquals(true, STRING_FROM(expected).asCharString(), STRING_FROM(actual).asCharString(), text, file, line); \
  } \
  else \
  { \
    UtestShell::getCurrent()->assertLongsEqual((long)0, (long)0, NULLPTR, file, line); \
  } } while(0)

I appreciate all the solutions. I've been thinking about it quite a lot and decided not to do any of that. Instead, I'm going to close this with "won't fix". Whenever this happens, it is better to use the FUNCTIONPOINTERS_EQUAL and that should resolve the warning.
I did enjoy the discussion and the topic. More template weirdness is at: https://www.youtube.com/watch?v=zxDzMjfsgjg


Reshape domain

Corresponding PR app-openproceshuis: https://github.com/lblod/app-openproceshuis/pull/21
OPH-282
OPH-286
OPH-290
Central to OPH are now processes, instead of BPMN files. The different routes have been renamed to reflect this (e.g. bpmn-files --> processes).
A process has its own title and description (both editable) and can hold multiple files. A process's details page lists all BPMN files as older versions of the latest BPMN file. The BPMN file that was uploaded most recently, is considered the latests BPMN file, and is visualised. All non-BPMN files are considered attachments and are shown in a seperate table.

didn't check the code yet but when uploading a file, the page is entirely reloaded which hurts the eyes:
https://github.com/lblod/frontend-openproceshuis/assets/3816305/4f98879d-53c5-413c-bff9-e97af5d88452

@nbittich thanks for pointing out the issue, it should now be fixed


UART Communication

This is now ready for test on the uart branch.
There is an Arduino library to test with here: https://github.com/madcowswe/ODriveArduino
Left to do still is:

[ ] Update Changelog
[ ] Make GPIO1 and 2 switchable between step/dir and UART
[ ] Update documentation


Added a silent option

Hi,
I'd like to have a option that suppresses the messages about starting and stopping the server. Thanks to @grantlucas I know that there is a Codeception option called "silent" which can be set globally via the settings, but unfortunately not for a specific extension. So I've wrote a little workaround for this. For me this is not a clean solution, but on the other hand the output methods remain untouched.
Hint: I've tested if this also effects other extensions and it doesn't.
Alex

@boone Thanks :)

👍 Looks good @tytoninae! Getting this merged and tagged as a new release of v1.1.2.

Yeah, thank you for being so kind to me :)


Allows exporting static maps with Google Basemaps

This PR extends our current static map export and allows exporting google maps basemaps.

Work done in this PR:

[x] Export defaults / non-styled Google Maps basemaps.
[x] Export styled Google Maps basemaps.
[x] Allow panning the basemap when the image export widget is active.
[x] Apply Google Maps limits in the export image form and warn the users.

[x] For regular users.
[x] For Google Maps Premium users.

[x] Add attribution to the exported image (for regular basemaps and GMaps)
[x] Add CARTO logo to the exported image.
[x] Remove menu in the export image form header.

How to test this

Enable the static-maps feature flag and then simply create a map (with or without geometries) and export it.

Enable the Google Maps API in your user.

Change the basemap and export it again. Use GMaps or default ones. Check that the attribution and our logo appears in the image.

Check that with Google Basemaps the max dimensions of the image are these:

Default: 640x640px
Premium plan: 2048x2048px (those that use a &signature= in the google_maps_key)

There's a couple of minor backend changes (to expose the google maps api key to the frontend) that probably should be reviewed by a backender.

No sure what's going on with the build, checking…

Can any @CartoDB/backend er check this one please?

@xavijam it looks ok now, isn't it?

One question @javierarce. Do we limit the resize of the "canvas" to the user limits or we only warn the user?

One question @javierarce. Do we limit the resize of the "canvas" to the user limits or we only warn the user?

We just warn users. Resizing the canvas to the biggest dimension allowed is something we could do, but I prefer that they do the action.

We just warn users. Resizing the canvas to the biggest dimension allowed is something we could do, but I prefer that they do the action.

👍

@javierarce, could you deploy your last changes in ded07? Thanks cc @saleiva in case you want to test it.

Remember, static-maps feature flag should be enabled in the user you are testing.

This is ready on ded07

Backend tests failing 😱 .

It's a random Jenkins connection failure. I relaunched them.

So, checking again, I found a new the following:
· We have some image size limit only in jpg. Trying to export a 3500x1000 png will work, but not in jpg. If this is a limitation of the format export itself then that should be reflected on the size text input fields limitation warning.
· When dragging the crop field there is a normally small but sometimes very large mismatch between the shadow box and the crop marks (being this ones the real export field), which may me confuse the user on which area is actually exported

· Copywriting for the export pane needs a review:

"You can also edit in width and height" sounds a but condescending and should be "Manually enter the image size"
"Change column names and type in table mode" makes no sense so we can put something like "Choose a lossless (png) or lossy (jpg) format"

We have some image size limit only in jpg. Trying to export a 3500x1000 png will work, but not in jpg. If this is a limitation of the format export itself then that should be reflected on the size text input fields limitation warning.

Was that tested with a Google Maps basemap? The limit for regular baseamps are 8192x8192px in both cases.

· When dragging the crop field there is a normally small but sometimes very large mismatch between the shadow box and the crop marks (being this ones the real export field), which may me confuse the user on which area is actually exported

I can't reproduce this :/ When does this happen?

"You can also edit in width and height" sounds a but condescending and should be "Manually enter the image size"
"Change column names and type in table mode" makes no sense so we can put something like "Choose a lossless (png) or lossy (jpg) format"

I like these changes. I'll update the texts.

This is happening also on our basemaps.

That's not related with the basemaps @noguerol, it is related with the UI. Let's find the pattern, if it is a consistent problem, let's fix it. If not, let's open a ticket in order to investigate it, because it is true we could improve the way we manage that "focus" area when the user changes its size.

· When dragging the crop field there is a normally small but sometimes very large mismatch between the shadow box and the crop marks (being this ones the real export field), which may me confuse the user on which area is actually exported

Copy and that bug fixed too. I'll deploy again.
PS: The problem with exporting a 3000x1000 image appeared on production, not in staging or dev.

Yes, i've not been able to replicate the size problem in staging :-/

That's good man! So, could we move this to deploy then?

Yes, i've not been able to replicate the size problem in staging :-/

It's likely that we'll find that issue in production.

That's good man! So, could we move this to deploy then?

Fine by me. What about you, @noguerol?

Update regarding the export size: I was able to export a 8000x1000 px image in production.

"Export button" is enabled even with out of the limit size, exporting an image only to the max size permitted and opening some inconsistencies in https://github.com/CartoDB/cartodb/issues/11775

Another thing: when exporting with a google basemap now works, but switching back to any other basemap and exporting it returns in an image with no basemap, only geometries cc @alonsogarciapablo

Another thing: when exporting with a google basemap now works, but switching back to any other basemap and exporting it returns in an image with no basemap, only geometries

Noooo 😱

Just noticed the same issues as Noguerol.

Exporting an image with our basemaps only paints geometry, but no basemaps.

When exporting a Google basemap image out of bounds, the portion of Google Maps respect the size limit but it doesn't paint well what falls outside it.

When exporting a Google basemap image out of bounds, the portion of Google Maps respect the size limit but it doesn't paint well what falls outside it.

Yes, that's a limitation of their service. Once I fix the disable button bug, it won't be possible to export that kind of images.

@noguerol found this problem -> https://github.com/CartoDB/cartodb/issues/11910, and we will take care of it in that issue. So, ready to be merged right guys? 💃 .

Yes, let's do it!


fixes

Codecov Report
Base: 69.62% // Head: 69.62% // Decreases project coverage by -0.00% :warning:

Coverage data is based on head (ba93ca9) compared to base (9d71bb4).
Patch coverage: 0.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1383      +/-   ##
==========================================
- Coverage   69.62%   69.62%   -0.01%
==========================================
  Files         191      191
  Lines        4738     4737       -1
  Branches      973      973
==========================================
- Hits         3299     3298       -1
  Misses       1420     1420
  Partials       19       19

Impacted Files
Coverage Δ

src/editor/Editor.tsx
92.85% <ø> (-0.06%)
:arrow_down:

src/firmware/sagas.ts
54.03% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Test rebase

Checks

[ ] Your YAML file has required fields as listed in Specs
[ ] All checks have passed yaml-lint passed
[ ] You agree to contribute your work under MIT license

continuous integration A


Adding [Add] function to TreeHash, and comment on treeHash in completeMultipart

This is re #11

The new Add method was something to quickly reuse the tree hash logic that already exists. The TreeHash type is something to be written to in order to calculate the tree hash were as the Add should be a method on a new type whose sole purpose is creating tree hashes. Something along the lines of:
// TreeHasher is a type suitable for constructing a complete tree hash from
// individual tree hash parts.
type TreeHasher struct

// Add adds a tree hash part. Parts must be added in order and be hex encoded
// strings.
func (th *TreeHasher) Add(partHash string)

// CreateTree computes the complete tree hash and returns it as a hex encoded
// string.
func (th *TreeHasher) CreateTree() string

This new type could then be used to compute the tree hash needed to complete a multipart upload and used internally by the existing TreeHash type.
Otherwise the comment about tree hash needing to be a hex encoded string is definitely needed.

Aah, I see. I was confused: You're saying that TreeHash as it stands will
only hash a single part, and not the multiple parts required for a
Multipart Upload?
If so, I can modify the request with a hasher as you described, with tests.
2015-03-04 17:05 GMT-08:00 Robert Williamson<EMAIL_ADDRESS>
The new Add method was something to quickly reuse the tree hash logic that
already exists. The TreeHash type is something to be written to in order to
calculate the tree hash were as the Add should be a method on a new type
whose sole purpose is creating tree hashes. Something along the lines of:
// TreeHasher is a type suitable for constructing a complete tree hash from
// individual tree hash parts.
type TreeHasher struct
// Add adds a tree hash part. Parts must be added in order and be hex encoded
// strings.
func (th *TreeHasher) Add(partHash string)
// CreateTree computes the complete tree hash and returns it as a hex encoded
// string.
func (th *TreeHasher) CreateTree() string
This new type could then be used to compute the tree hash needed to
complete a multipart upload and used internally by the existing TreeHash
type.
Otherwise the comment about tree hash needing to be a hex encoded string
is definitely needed.
—
Reply to this email directly or view it on GitHub
https://github.com/rdwilliamson/aws/pull/12#issuecomment-77285845.


Don't generate a.out when executing without arguments

a.out should not be generated when executing blanc without any arguments.
Expected:
clang: error: no input files

Actual:
No error log and a.out is generated

Fixed by 4a3686b43b16eca06f02589508989f86a88a8238


[Bug] Hive Catalog read broker file failed

Search before asking

[X] I had searched in the issues and found no similar issues.

Version
2.0.7
What's Wrong?
mysql>  select  * from    hive.app.app_hotel_supplier_shopping_records_hotel_d
where   day_num='2024-04-22'
and     source = 'xxxxxxxxxxx'
and     hotel_country_code = 'US'
and     supplier_code in ('yyyyyyyyyyyyyy') limit 5;
+-------------+----------------+-------------------+------+----------+--------------------+-----------------+------------------+--------------------+-----------------+---------------+------------------------+----------+------------+------------+----------------------+------------------------------+----------------------------+----------------------------------+-------------------------------------+---------------+---------------+------------+
| source      | supplier_code  | advance_days_type | stay | hotel_id | hotel_country_code | number_of_rooms | number_of_adults | number_of_children | shopping_type   | is_batch_rate | is_supplier_batch_rate | is_cache | error_code | is_success | hotel_shopping_count | hotel_shopping_success_count | hotel_shopping_cache_count | hotel_shopping_buyer_batch_count | hotel_shopping_supplier_batch_count | pricing_count | booking_count | day_num    |
+-------------+----------------+-------------------+------+----------+--------------------+-----------------+------------------+--------------------+-----------------+---------------+------------------------+----------+------------+------------+----------------------+------------------------------+----------------------------+----------------------------------+-------------------------------------+---------------+---------------+------------+
| xxxxxxxxxxx | yyyyyyyyyyyyyy | 2                 |    1 | 11111111 | US                 |               1 |                1 |                  0 | PURCHASE_SOURCE | N             | N                      | N        | 0          | Y          |                    1 |                            1 |                          0 |                                0 |                                   0 |            10 |             1 | 2024-04-22 |
| xxxxxxxxxxx | yyyyyyyyyyyyyy | 3                 |    1 | 11111111 | US                 |               1 |                1 |                  0 | PURCHASE_SOURCE | Y             | Y                      | N        | 0          | Y          |                    1 |                            1 |                          0 |                                1 |                                   1 |            10 |             1 | 2024-04-22 |
| xxxxxxxxxxx | yyyyyyyyyyyyyy | -1~0              |    1 | 11111111 | US                 |               1 |                1 |                  0 | PURCHASE_SOURCE | Y             | UNKNOWN                | Y        | 0          | Y          |                    5 |                            5 |                          5 |                                5 |                                   0 |            10 |             1 | 2024-04-22 |
| xxxxxxxxxxx | yyyyyyyyyyyyyy | 15-30             |    1 | 11111111 | US                 |               1 |                1 |                  0 | PURCHASE_SOURCE | Y             | Y                      | N        | 0          | Y          |                    2 |                            2 |                          0 |                                2 |                                   2 |            10 |             1 | 2024-04-22 |
| xxxxxxxxxxx | yyyyyyyyyyyyyy | 15-30             |    1 | 11111111 | US                 |               1 |                1 |                  0 | PURCHASE_SOURCE | Y             | Y                      | N        | 0          | Y          |                    1 |                            1 |                          0 |                                1 |                                   1 |            10 |             1 | 2024-04-22 |
+-------------+----------------+-------------------+------+----------+--------------------+-----------------+------------------+--------------------+-----------------+---------------+------------------------+----------+------------+------------+----------------------+------------------------------+----------------------------+----------------------------------+-------------------------------------+---------------+---------------+------------+
5 rows in set (2.48 sec)

mysql>  select  * from    hive.app.app_hotel_supplier_shopping_records_hotel_d
where   day_num='2024-04-22'
and     source = 'xxxxxxxxxxx'
and     hotel_country_code = 'US'
and     supplier_code in ('yyyyyyyyyyyyyy') limit 5;
ERROR 1105 (HY000): errCode = 2, detailMessage = (<IP_ADDRESS>)[CANCELLED][INTERNAL_ERROR]Orc row reader nextBatch failed. reason = Failed to read jfs://hdfs/user/hive/warehouse/app.db/app_hotel_supplier_shopping_records_hotel_d/day_num=2024-04-22/part-00113-ffb5e688-5907-4f97-98e7-e57f2ea823bf-c000: [THRIFT_RPC_ERROR]read broker file failed, broker:TNetworkAddress(

What You Expected?
Data read normal
How to Reproduce?
No response
Anything Else?
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

how do I contribute can somebody help

Check HDFS Status: Ensure that the HDFS is operational and that there are no issues with reading from or writing to the HDFS.
Verify File Existence: Check if the file part-00113-ffb5e688-5907-4f97-98e7-e57f2ea823bf-c000 exists in the specified directory jfs://hdfs/user/hive/warehouse/app.db/app_hotel_supplier_shopping_records_hotel_d/day_num=2024-04-22/.
File Permissions: Ensure that the user running the query has the necessary permissions to read the file.
Network Connection: Verify that there are no network issues between the client and the HDFS cluster. The error message mentions a potential Thrift RPC error, which could indicate a communication issue.
Check for Data Corruption: There might be corruption in the file itself. You can attempt to read the file using other tools or inspect it directly in HDFS to see if it's intact.
Consult Logs: Check the logs on the HDFS cluster, as well as any relevant logs on the MySQL server, for more detailed error messages or stack traces that might provide additional clues about the root cause of the issue.
If these steps don't resolve the problem, you may need to involve your Hadoop administrator or database administrator for further investigation and assistance.

Check HDFS Status: Ensure that the HDFS is operational and that there are no issues with reading from or writing to the HDFS. Verify File Existence: Check if the file part-00113-ffb5e688-5907-4f97-98e7-e57f2ea823bf-c000 exists in the specified directory jfs://hdfs/user/hive/warehouse/app.db/app_hotel_supplier_shopping_records_hotel_d/day_num=2024-04-22/. File Permissions: Ensure that the user running the query has the necessary permissions to read the file. Network Connection: Verify that there are no network issues between the client and the HDFS cluster. The error message mentions a potential Thrift RPC error, which could indicate a communication issue. Check for Data Corruption: There might be corruption in the file itself. You can attempt to read the file using other tools or inspect it directly in HDFS to see if it's intact. Consult Logs: Check the logs on the HDFS cluster, as well as any relevant logs on the MySQL server, for more detailed error messages or stack traces that might provide additional clues about the root cause of the issue. If these steps don't resolve the problem, you may need to involve your Hadoop administrator or database administrator for further investigation and assistance.

When I execute the same sql statement with 1.2.4 doris, this problem does not occur

Check HDFS Status: Ensure that the HDFS is operational and that there are no issues with reading from or writing to the HDFS.检查 HDFS 状态：确保 HDFS 可以运行，并且读取或写入 HDFS 时没有问题。 Verify File Existence: Check if the file part-00113-ffb5e688-5907-4f97-98e7-e57f2ea823bf-c000 exists in the specified directory jfs://hdfs/user/hive/warehouse/app.db/app_hotel_supplier_shopping_records_hotel_d/day_num=2024-04-22/. 验证文件是否存在：检查指定目录jfs://hdfs/user/hive/warehouse/app.db/app_hotel_supplier_shopping_records_hotel_d/day_num=2024-中是否存在文件part-00113-ffb5e688-5907-4f97-98e7-e57f2ea823bf-c000 04-22/。 File Permissions: Ensure that the user running the query has the necessary permissions to read the file. 文件权限：确保运行查询的用户具有读取文件所需的权限。 Network Connection: Verify that there are no network issues between the client and the HDFS cluster. The error message mentions a potential Thrift RPC error, which could indicate a communication issue. 网络连接：验证客户端和HDFS集群之间没有网络问题。该错误消息提到了潜在的 Thrift RPC 错误，这可能表明存在通信问题。 Check for Data Corruption: There might be corruption in the file itself. You can attempt to read the file using other tools or inspect it directly in HDFS to see if it's intact. 检查数据损坏：文件本身可能已损坏。您可以尝试使用其他工具读取该文件或直接在 HDFS 中检查它是否完好。 Consult Logs: Check the logs on the HDFS cluster, as well as any relevant logs on the MySQL server, for more detailed error messages or stack traces that might provide additional clues about the root cause of the issue. 查看日志：检查 HDFS 集群上的日志以及 MySQL 服务器上的任何相关日志，以获取更详细的错误消息或堆栈跟踪，这些消息或堆栈跟踪可能会提供有关问题根本原因的其他线索。 If these steps don't resolve the problem, you may need to involve your Hadoop administrator or database administrator for further investigation and assistance. 如果这些步骤无法解决问题，您可能需要让 Hadoop 管理员或数据库管理员参与进一步调查和帮助。

Run the set enable_pipeline_engine = false command. That problem doesn't seem to exist


Swift 4 - Support

Dear;
I want to enquire of SwiftyJSON 3.1.4 supports Swift 4.
Environment
List the software versions you're using:

SwiftyJSON: 3.1.4
Xcode Version: 9.1
Swift Version: 4

Please also mention which package manager you used and its version. Delete the
other package managers in this list:

Cocoapods: 1.3.1

@baltameme
The latest SwiftyJSON 4.0.0 is Swift 4.0 compatible.


FZ will not allow Microsoft To Do to be dragged to a zone

Microsoft PowerToys version
0.75.0
Installation method
PowerToys auto-update
Running as admin
Yes
Area(s) with issue?
FancyZones
Steps to reproduce
Restart Windows
Ensure PT is running
Ensure FZ is active
Ensure Activate Zones while dragging with Shift is enabled
Open Microsoft To Do app
Hold shift
Drag toward a zone
✔ Expected Behavior
Zones on the current screen should be displayed
To Do app should be able to be dragged to a zone
❌ Actual Behavior
No zones are displayed
To Do app cannot be dragged to a zone
Other apps seem to work as expected
Other Software
No response

PowerToysReport_2023-11-01-11-39-09.zip

Whatsapp desktop app has the same symptom

probably #29491, update to 0.75.1 hotfix to resolve, report back if this is fixes it /needinfo

Yes, 0.75.1 hotfix did resolve the issue. Thank you for such a quick response!


Null safety sound mode fixes

This fixes all issues expect the test failures from test/widgets/widget_inspector_test.dart, which are resolved by @jacob314 in https://github.com/flutter/flutter/pull/68661.
Fixes https://github.com/flutter/flutter/issues/68562

CI is still sad: https://cirrus-ci.com/task/5469809754243072

The failing widget_inspector_test.dart are blocked on https://github.com/flutter/flutter/pull/68661.

The last few widget inspector failures need:
diff --git a/packages/flutter_test/lib/src/_matchers_io.dart b/packages/flutter_test/lib/src/_matchers_io.dart
index 9c1f02244d..23c7a2b1a2 100644
--- a/packages/flutter_test/lib/src/_matchers_io.dart
+++ b/packages/flutter_test/lib/src/_matchers_io.dart
@@ -52,6 +52,8 @@ class MatchesGoldenFile extends AsyncMatcher {
     Future<ui.Image> imageFuture;
     if (item is Future<ui.Image>) {
       imageFuture = item;
+    } else if (item is Future<ui.Image?>) {
+      imageFuture = item.then((ui.Image? image) => image!);
     } else if (item is ui.Image) {
       imageFuture = Future<ui.Image>.value(item);
     } else {

Additionally you should only pass --sound-null-safety to the framework and flutter_test tests.

That works too :)

The failing internal tests are legit, but we can fix the code there after merging this PR -- Some user code expects the returned value to be a non-nullable type for the result of Navigator.of(context)!.push().

Submitting, google3 is fixed with cl/338282385.


Why all tests live in lib.rs

Could we move them under tests/?

Hi @TisonKun! It's common in Rust for unit tests to live alongside the code they test. These unit tests are different from the tests under the root /tests directory, which are integration tests. They don't have access to the library's internals and behave the same as a library that uses getopts as a dependency. You can see the tests there pull in getopts as an external crate.
Having said that, we could pull the tests out of lib.rs to make things easier to follow. Would you like to submit a PR that moves the tests currently under src/lib.rs into a src/tests.rs or src/tests/mod.rs file?

@KodrAus thanks for your education. That is what I am looking for.
I submit a PR #76 to try to address this issue. But as you see, I am a total newbie to Rust, so any suggestion is helpful and I hope the pull request not that worse :-)


Update createTimerMessageStore call with new parameter

Which Issue(s) This PR Fixes

Fixes #issue_id
Brief Description

How Did You Test This Change?

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 47.89%. Comparing base (6a94a02) to head (edbe77b).
Report is 2 commits behind head on develop.

Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #9041      +/-   ##
=============================================
+ Coverage      47.83%   47.89%   +0.06%
- Complexity     11836    11869      +33
=============================================
  Files           1305     1312       +7
  Lines          91344    91717     +373
  Branches       11721    11749      +28
=============================================
+ Hits           43690    43926     +236
- Misses         42255    42375     +120
- Partials        5399     5416      +17

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


Custom gradient value in weight update rule

For SGD optimizer, get_updates(self, params, loss)  is implemented is this way:
w = current weights of your model
assigning a learning rate lr to some number
g = taking gradients of your weights w with respect to loss.
and do update operation like w - lr*g

How can I change the update as w - LR* (custom gradient_value_I_give_as_input)?

@rohanmohapatra
Moving this issue to closed status as there has been no activity, in case you still face the error please create a new issue.


I can't change the language to Russian

I am from Russia, so I write through a translator. Please help me change the language to Russian. I change the config.yml file to ru_ru, but the game is still in English

https://github.com/lenis0012/Translations/pull/93

problem is still active
[14:12:59] [Server thread/INFO]: [LoginSecurity] Enabling LoginSecurity v3.0.2*
[14:12:59] [Server thread/INFO]: [LoginSecurity] Loading base translations from "en_us"
[14:12:59] [Server thread/INFO]: [LoginSecurity] Loading specified translations from "ru_ru"
[14:12:59] [Server thread/WARN]: [LoginSecurity] Can't find translation for ru_ru. Are you upt to date?

guys from https://github.com/lenis0012/Translations/pull/93 saing this a bug and you beed to create  ru_ru file in plugin folder  and fill it with
https://raw.githubusercontent.com/lenis0012/Translations/master/ru_ru.json

снимите видео или сделайте более подробный туториал по изменению языков.
ничего не понятно


How to launch?

When I run the command like this:
# ros2 launch ros2_draw_squares
 move_robot_in_squares_service_server.launch.py

I meet an error as following:
file 'move_robot_in_squares_service_server.launch.py' was not found in the share directory of package 'ros2_draw_squares' which is at '/home/wyz/my-ros2/ws_wyz/install/ros2_draw_squares/share/ros2_draw_squares'

How could I resolve it?
Thanks

@beizhengren seems like you have not sourced your workspace. You can read what does it mean and how to do it [here[(https://docs.ros.org/en/foxy/Tutorials/Beginner-Client-Libraries/Creating-A-Workspace/Creating-A-Workspace.html#source-ros-2-environment)
I am closing the issue. Feel free to reopen it if sourcing the workspace does not solve it.