The extension host is crashing

Issue Type: Bug
Hi,
Recently I'm facing an issue, that the extension host is crashing, I don't know from where i can get a log to know which extension is responsible for this issue, to solve the issue I have to click on Restart Extension Host
VS Code version: Code 1.38.1 (b37e54c98e1a74ba89e03073e5a3761284e3ffb0, 2019-09-11T13:35:15.005Z)
OS version: Windows_NT x64 10.0.18362

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz (8 x 4008)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwareoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_deferred_display_list: disabled_offskia_renderer: disabled_offsurface_synchronization: enabled_onvideo_decode: enabledviz_display_compositor: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
31.88GB (18.63GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (51)

Extension
Author (truncated)
Version

html-snippets
abu
0.2.1

terminal-commands
adr
1.0.5

vscode-json
and
1.5.0

azds
azu
1.0.120190904

jsonviewer
cci
1.2.2

compulim-vscode-closetag
Com
1.2.0

githistory
don
0.4.6

xml
Dot
2.5.0

vscode-generate-getter-setter
DSK
0.5.0

tslint
eg2
1.0.44

json-tools
eri
1.0.2

beautify
Hoo
1.5.0

minify
Hoo
0.4.3

ftp-simple
hum
0.7.0

vstsbuildstatus
jep
0.7.1

vstsservicestatus
jep
1.3.0

vscode-peacock
joh
3.1.5

minifyall
jos
1.3.9

docomment
k--
0.1.8

chat
kar
0.21.1

vscode-github
Kni
0.30.2

json-to-ts
Mar
1.5.5

git-graph
mhu
1.15.0

xml-format
mik
1.0.2

prettify-json
moh
0.0.3

vscode-azureappservice
ms-
0.15.0

vscode-azurestorage
ms-
0.7.1

mssql
ms-
1.6.0

python
ms-
2019.9.34911

vscode-ai
ms-
0.6.3

azure-account
ms-
0.8.4

azurecli
ms-
0.4.6

csharp
ms-
1.21.2

vsliveshare
ms-
1.0.809

vsliveshare-audio
ms-
0.1.66

vsliveshare-pack
ms-
0.3.3

team
ms-
1.149.2

debugger-for-chrome
msj
4.11.7

vscode-json-editor
nic
0.2.3

fix-json
oli
0.1.2

open-html-in-browser
pea
1.3.0

qub-xml-vscode
qub
1.2.8

typescript-hero
rbb
3.0.0

vscode-xml
red
0.9.0

json-organizer
rin
0.0.4

LiveServer
rit
5.6.1

code-spell-checker
str
1.7.18

html-preview-vscode
tht
0.2.5

vscodeintellicode
Vis
1.1.9

vscode-wakatime
Wak
2.2.0

json
Zai
1.0.2

We have seen a lot of issues coming in for crashes caused by karigari.chat. See https://github.com/microsoft/vscode/issues/77099#issuecomment-514844205 .  Can you try to disable it?

Hi,
The problem still exists, i open the developer tool and i got this error,
Error: Uncaught (in promise): Failed to execute git {  "exitCode": 128,  "gitCommand": "rev-parse",  "stdout": "",  "stderr": "fatal: no upstream configured for branch 'quotelineassetDeprecating'\n"}	at new AppInsightsAsyncCorrelatedErrorWrapper (c:\Users\AbdulmonaemAlhamwi\.vscode\extensions\qub.qub-xml-vscode-1.2.8\node_modules\applicationinsights\out\AutoCollection\CorrelationContextManager.js:172:18)	at resolvePromise (c:\Users\AbdulmonaemAlhamwi\.vscode\extensions\qub.qub-xml-vscode-1.2.8\node_modules\zone.js\dist\zone-node.js:501:31)	at Function.ZoneAwarePromise.reject (c:\Users\AbdulmonaemAlhamwi\.vscode\extensions\qub.qub-xml-vscode-1.2.8\node_modules\zone.js\dist\zone-node.js:564:20)	at t.Git._exec (c:\Users\AbdulmonaemAlhamwi\AppData\Local\Programs\Microsoft VS Code\resources\app\extensions\git\dist\main.js:1:30386)
i will try to disable the git extinction and wait for result

I will test it for 2 days and give you the result

Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!

Hi,
So far it's not appearing in the vs code insider


BZ-1327632 - Support for custom authentication in RemoteRuntimeEngine configuratoin

@mswiderski This is the cherry-pick to master.

+1 to merge


AnimationPlayer Node Doesn't Function Correctly with Negative Speed Scale

Tested versions

Found in v4.3.stable.official [77dcf97d8]
Reproducible in v4.2.2.stable.official [15073afe3]

System information
Godot v4.3.stable - Linux Mint 22 (Wilma) - X11 - Vulkan (Mobile) - dedicated NVIDIA GeForce RTX 3080 (nvidia; 535.183.01) - AMD Ryzen 9 5900X 12-Core Processor (24 Threads)
Issue description
The engine documentation states here that setting an AnimationPlayer's speed scale to -1 will play animations in reverse. However, the AnimationPlayer node doesn't utilize speed scale correctly in-editor or at runtime.
While in editor, trying to hit play on an animation within the AnimationPlayer node will do nothing. At runtime, any played animation will snap to its last keyframe.
Potentially related to #88518, but unsure.
Steps to reproduce
1.) Create new project, and create a 3D scene.
2.) Under the scene root node, add a CSGBox3D and an AnimationPlayer
3.) Create an animation called "move" and set it to autoplay on load.
4.) Animate the CSGBox3D's transformation to move however you wish over one second.
5.) In editor, hit play on "move". Animation will play.
6.) Create a Camera3D node and move it back so it is able to see the CSGBox3D + its move animation.
7.) Run project. Animation should play immediately as long as you enabled autoplay on load.
8.) Stop running project. Select AnimationPlayer and set Speed Scale to -1.
9.) In editor, hit play on "move". Animation will not play.
10.) Run project. CSGBox3D snaps to the last keyframe of "move" instead of playing it in reverse.
Minimal reproduction project (MRP)
N/A

Just stumbled on this today, for the editor (Animation panel) it actually depends on the vertical time bar position. Here are a bit more details on current behavior. I tested the 3 cases mentioned by Tokage, all with Speed Scale = -1:

when pressing play from time = 0, nothing happens (instead of restarting from animation end and playing backwards)
when pressing play from some time in the middle, it plays backwards as expected
when pressing play from end time, the timeline doesn't move but the time 0 is still previewed in the scene

As you mentioned, it also seems to affect runtime (in runtime the Animation Player automatically restarts from time 0 and so the animation was stuck on first frame).
My workaround was to use a script to force playing backwards from the end:
play(&"demo_animation", -1, -1, true) (the 2nd -1 is the custom speed, and true is for from_end argument)


Do not ask the password twice when decrypting the file

Just a small enhancement, because when decrypting, there is no problem entering an invalid password.

Forget. There is actually a big problem, the text is re-encripted.

You have a good point actually but since I no longer use Windows I can't make the change and test it, someone else would have to!

I am glad you could get rid of windows. I hope it is for good. Then, I am going to keep it open in case some windows user shows up round here.

It would be good if the password is asked once.


VIRTUAL_HOST=opencart.domain.com,store.domain.com not working

seems adding the environment variable to a docker compose fails to add the second domain
  - VIRTUAL_HOST=opencart.domain.com,store.domain.com
  - VIRTUAL_PORT=80
  - LETSENCRYPT_HOST=opencart.domain.com,store.domain.com
  -<EMAIL_ADDRESS>
I would think after running docker-compose up -d on the compose file i should be able to surf to both opencart.domaion.com and store.domain.com and get the same site, however only opencart appears to work

It should and I have such configuraiton in multiple places working.
Try to use provided ./start.sh or make sure to add --build to docker-compose up --build -d, so the configuration changes are taken into consideration.

@outbackdingo if you have started the compose file and only edited to add another domain, it might not work as expected, once the environment variable will not notify the nginx-generator... but in that case if you run a compose down and up again it will work. Please git it a try!
$ docker-compose down && docker-compose up -d

same issue on my end. I have foo.com and bar.com, but the https://bar.com was not completed, it shows that the https://bar.com could not resolved as https.
VIRTUAL_HOST=foo.com,bar.com
LETSENCRYPT_HOST=foo.com,bar.com


Proposal: Graceful Handling of Permission Denied

We are running on a multi-tenant cluster, with users restricted generally by namespaces, with some users having a large set of namespaces.
We would like the ability for users to run a helm list --all-namespaces to see what is running on their namespaces, but Helm fails, due to having insufficient permission on other namespaces. We have given users a blanket GET on most resources, such as namespaces, but Helm is attempting to read secret data out of other namespaces, which I feel like is an untenable permission solution on a multitenant cluster.
I think it would be much better if the helm list --all-namespaces command were to return the listing of Helm charts in the namespaces the user has permission to, and perhaps flag a warning on other namespaces.

Similar to kubectl's --all-namespaces flag, helm list --all-namespaces is a cluster-level request, and as such it requires cluster-level scope to view those resources. Because of that, the user can either be granted cluster scope access to view releases at the cluster scope, or view releases at the namespace scope.
Hope this helps answer your question with regards to the scope of --all-namespaces.

I understand the implementation, but am just expressing concern that the permissions required for that are simply unworkable in a shared-tenant cluster. I don't believe the permissions are necessary to provide reasonable functionality if they are not available (ie. don't error, but just show what you can, with a warning that not all namespaces were readable).
Secrets are designed to hold sensitive data, and giving all users on our cluster blanket access to Secrets just for this seems like an untenable position from a security perspective.

Fair enough.
If you're interested in investigating this idea further, I'd suggest writing a plugin to try and see if this idea is feasible. We'd be interested to see what you come up with.
Let us know if you run into any issues.

Hi, @jmlogan - as suggested above, a plugin is likely the right path forward. Another option if you believe a change to helm is correct is to submit a Helm Improvement Proposal so as to work in the community to make your ideas a reality: https://github.com/helm/community/blob/master/hips/hip-0001.md - meanwhile, I will close this issue. Thanks!


Use enqueue_local when scheduling on the same thread

After introducing thread affinity, continuations are being scheduled differently, and we're seeing 60ms delays in some cases like this (shown below). This is caused by thread going into waitForActivity and not waking up because signalActivity is only called if the scheduled thread is different then the current thread. This PR fixes this problem.
Use enqueue_local when scheduling on the same thread, this will fix the issue where scheduling immediate events on the same thread as the scheduler, there will be a 60ms delay because event loop goes to waitForActivity without seeing the new event in the queue.
[Oct 29 10:58:44.620] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering transform_plugin()
[Oct 29 10:58:44.620] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    Event is TS_EVENT_HTTP_SEND_REQUEST_HDR
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering transform_plugin()
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    Event is TS_EVENT_HTTP_READ_RESPONSE_HDR
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering transformable()
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Exiting transformable with return 1
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering transform_add()
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering null_transform()
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    Event is TS_EVENT_IMMEDIATE
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering handle_transform()
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    Writing 26 bytes on VConn
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    toWrite is 26
[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    avail is 26            <= between here
[Oct 29 10:58:44.681] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering null_transform() <= and here
[Oct 29 10:58:44.681] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    Event is TS_EVENT_IMMEDIATE
[Oct 29 10:58:44.681] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering handle_transform()
[Oct 29 10:58:44.682] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering null_transform()
[Oct 29 10:58:44.682] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    Event is TS_EVENT_VCONN_WRITE_COMPLETE
[Oct 29 10:58:44.682] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering null_transform()
[Oct 29 10:58:44.682] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    VConn is closed

[Oct 29 10:58:44.621] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform)    avail is 26            <= between here
[Oct 29 10:58:44.681] {0x7fc71e9b4700} [ET_NET 2] DIAG: (null_transform) Entering null_transform() <= and here
Though i see 60ms delay on the same thread, i do not understand why we need to wakeup current thread?

I'd prefer draining all IMMEDIATE_EVENT event in last loop of event processes.

@bryancall That's what I thought it should be, but it's actually more complicated than that. When scheduling, we put things into the EventQueueExternal of the thread we want to schedule on, and the next time that thread goes through EThread::process_queue it will see the event and process it, either executing the event if it's an immediate event, or put it in the EventQueue if there is a timeout. And when we finish all this, we look at what's the next event in EventQueue to determine the sleep time. In the case of this problem, it's an immediate event, and it is scheduling on its own thread, i.e. the EventQueueExternal has already been checked and dequed to EventQueueLocal, so whatever it's scheduling won't be processed till the next loop. And since it's an immediate event, checking the EventQueue for the next event won't see it so the sleep time will always be 60ms.
@scw00 I don't think that's possible, and could lead to an infinitely loop easily. Like in this problem, if an event schedules another immediate event on its own thread, and that event also schedules another one, and another one... you will not be able to drain it since every time you check the EventQueueExternal there is only one event, deques it to EventQueueLocal and process it, but when you go back to check again, there's a new one.
@vmamidi We need to signal the thread itself because that's the only way to let it know there's an immediate event that needs to be processed.
Another approach to this problem is to schedule events that is targeted to the same thread as the scheduler's in EventQueue directly, but that will mess up the timeout_at check, since it's an immediate event, that value will be small than 0.

I am not sure of a good solution here but signaling to wakeup current thread which is currently awake increases context switches and latency.

But it is not awake, which is why we signal.

And like I said above, there's another approach to this problem, which is when scheduling events on the same thread as the scheduler, instead of putting it into EventQueueExternal, we put it into EventQueue, it would also make sense since External means it's for other threads to schedule things. But this would need some logic change to make sure the assert doesn't fail.

And like I said above, there's another approach to this problem, which is when scheduling events on the same thread as the scheduler, instead of putting it into EventQueueExternal, we put it into EventQueue, it would also make sense since External means it's for other threads to schedule things. But this would need some logic change to make sure the assert doesn't fail.

I prefer this approach.

Found a better way than putting it in EventQueue, forgot we had a enqueue_local.

link to #4825

It doesn't work. The test code is in #4695.
[Nov  1 08:49:41.651] [ET_NET 0] DIAG: (add_header) imm_handler
[Nov  1 08:49:41.651] [ET_NET 0] DIAG: (add_header) event_handler
[Nov  1 08:49:41.711] [ET_NET 0] DIAG: (add_header) imm_handler
[Nov  1 08:49:41.711] [ET_NET 0] DIAG: (add_header) event_handler
[Nov  1 08:49:41.771] [ET_NET 0] DIAG: (add_header) imm_handler
[Nov  1 08:49:41.771] [ET_NET 0] DIAG: (add_header) event_handler
[Nov  1 08:49:41.810] [ET_NET 0] DIAG: (add_header) imm_handler
[Nov  1 08:49:41.810] [ET_NET 0] DIAG: (add_header) event_handler

@scw00 the code you posted also has the same effect without the thread affinity code, so I'd say that's a different issue, I can look into that after some other issues I'm dealing with.

Like in this problem, if an event schedules another immediate event on its own thread, and that event also schedules another one, and another one... you will not be able to drain it since every time you check the EventQueueExternal there is only one event, deques it to localQueue and process it, but when you go back to check again, there's a new one.

Does this has the same case ?

@scw00 no, this one doesn't have that issue. Waiting for @SolidWallOfCode for some input on this.

Look at @scw00's example, I must confess I have no idea what the expected behavior is. Personally I think it should return TS_ERROR because the timeout value is invalid.

Yes, this definitely looks better.

#include <stdio.h>
#include <string.h>

#include "ts/ts.h"
#include "tscore/ink_defs.h"
#include "PluginVC.h"

#define PLUGIN_NAME "add_header"

static int
imm_handler(TSCont contp, TSEvent event, void *edata)
{
  printf("imm event\n");
  TSContSchedule(contp, 0);
  return TS_SUCCESS;
}

static int
read_header_handler(TSCont contp, TSEvent event, void *edata)
{
  TSHttpTxn txnp = (TSHttpTxn)edata;
  TSContScheduleOnPool(TSContCreate(imm_handler, TSMutexCreate()), 0, TS_THREAD_POOL_NET);
  TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);
  return TS_SUCCESS;
}

void
TSPluginInit(int argc, const char *argv[])
{
  /* Create a continuation with a mutex as there is a shared global structure
     containing the headers to add */
  TSPluginRegistrationInfo info;

      info.plugin_name   = (char *)PLUGIN_NAME;
        info.vendor_name   = (char *)"Apache Software Foundation";
          info.support_email = (char<EMAIL_ADDRESS>
            if (TS_SUCCESS != TSPluginRegister(&info)) {
                TSError("[%s] Plugin registration failed", PLUGIN_NAME);
              }

  auto cont = TSContCreate(read_header_handler, TSMutexCreate());

  TSHttpHookAdd(TS_HTTP_READ_REQUEST_HDR_HOOK, cont);

  TSError("[%s] Plugin not initialized", PLUGIN_NAME);
  return;
}

Dead loop if I schedule event to the same thread. I ok with this since user should not expect all event trigger immediately.  But it would be great if we can break the loop to check network event and run this loop again.

The expected behavior should be for the immediate to occur in the next event loop, but after a zero timeout. Does this code not do that after applying the PR? I thought this was precisely what was being fixed.

@scw00 What do you mean by dead loop?  Are you saying we won't run the continuation handler until the next loop and may sleep for 60ms?  That seems like a really bad interface.
I don't see how that is possible looking at the change.  It should detect that the plugin is scheduling the event on the "local" thread and enqueue it locally.

@zwoop - because the other issues are outside the scope of this PR. This fixes a problem in a good way, but it doesn't fix every issue with scheduling.

@bryancall The expected behavior is

The expected behavior should be for the immediate to occur in the next event loop, but after a zero timeout. Does this code not do that after applying the PR? I thought this was precisely what was being fixed.

But in this pr. IIUC, If we imm-schedule event again and again, we would fall into infinite loop in one process_queue (without checking network event) until all these events are process.
@SolidWallOfCode Where do we set sleep_time ?
https://github.com/apache/trafficserver/blob/bad68b5280d46935d2ef88079a8259ac43878e2a/iocore/eventsystem/UnixEThread.cc#L244-L261
Seems sleep_time can only be changed when EventQueue timeout. IIUC, this pr doesn't change sleep_timeout.

@bryancall The expected behavior is

The expected behavior should be for the immediate to occur in the next event loop, but after a zero timeout. Does this code not do that after applying the PR? I thought this was precisely what was being fixed.

But in this pr. IIUC, If we imm-schedule event again and again, we would fall into infinite loop in one process_queue (without checking network event) until all these events are processed (Since we are schedule imm event forever, so it would be an infinite loop here. PS: loop until dead == dead loop ).
@SolidWallOfCode Where do we set sleep_time ?
https://github.com/apache/trafficserver/blob/bad68b5280d46935d2ef88079a8259ac43878e2a/iocore/eventsystem/UnixEThread.cc#L244-L261
Seems sleep_time can only be changed when EventQueue timeout. IIUC, this pr doesn't change sleep_timeout.
isn't the fix for this problem is to have zero timeout? Do we know why we don't have zero timeout in this scenario?

The dead loop @scw00 mentioned could be avoided by using the signal method, but that was shot down. The other way here is to put things into EventQueue, rather than EventQueueExternal, but that needs some logic change to the time out checking.

can we reproduce this problem with the null transform plugin?

@scw00 - sleep_time is essential set by EventQueue.earliest_timeout(), which computes the smallest time until the next scheduled event. That's put in next_time and sleep_time is calculated as the time from now until next_time. However, earliest_timeout gets its data by looking at the priority queue. This change puts the new immediate event in the priority queue (instead of the external queue) precisely so it is visible to earliest_timeout, which in turns causes sleep_time to be changed.

[approve ci]

[approve ci debian]

[approve ci clang-analyzer]

[approve ci]

@SolidWallOfCode  Thanks to your explain. And the last change insert the immediately event into the EventQueue.

@vmamidi  yes you can.

[approve ci autest]

[approve ci clang-analyzer]

@scw00 no it won't be dead loop

[approve ci]

[approve ci debian]

[approve ci fedora]

[approve ci autest]

Seems I got dead loop again with latest test code.
How about dumping all events into local queue at the beginning of the execute_regular loop.  The events in this local queue will be processed in this loop. And all schedule events (which derived from these local events) will be insert into external queue (as original code). Then checking whether external code is empty. If not, set sleep_time to 0.

@scw00 I don't see a dead loop, the loop count is increasing dramatically with the test code in there. And I don't think your method will work, how would you know if the scheduling happened inside the event loop?

[approve ci autest]

Just had a long discussion with @SolidWallOfCode and we still prefer the enqueue_local better for the following reasons:

EventQueue was designed to handle events that has a timeout.
Immediate events are supposed to happen immediately, so if the eventloop can make it happen it should, and not wait till the next loop to handle that.
The dead loop test code is artificial testing and is not the right way of writing a plugin.
If you really want your event to happen in the next event loop, but as fast as possible, you can still make that happen by adding a very small delay (need some fixing in the eventloop, have another PR coming for that)

So we're reverting back to using enqueue_local, which is very small amount of code change, keeps the event loop logic mostly the same as before, and fixes a problem someone is actually experiencing right now.

Let me emphasize the point that the event loop is both very core code and very subtle. For this reason, I strongly prefer making each change as small as possible. This means they can be tested and possibly reverted independently. More than any other piece of code, I think we need to be stringent about that here. A number of important points have been raised, but if we change those, I want them in other PRs for this reason.

[approve ci autest]

don't see a dead loop, the loop count is increasing dramatically with the test code in there, if it's a dead loop the loop count should be about the same as where the test code isn't running.

Thread 3 "[ET_NET 0]" hit Breakpoint 1, imm_handler (contp=0x1632ec0, event=TS_EVENT_IMMEDIATE, edata=0x1148c40) at imm.cc:13
13	  printf("imm event\n");
(gdb) bt
#0  imm_handler (contp=0x1632ec0, event=TS_EVENT_IMMEDIATE, edata=0x1148c40) at imm.cc:13
#1  0x00000000006d8087 in INKContInternal::handle_event (this=0x1632ec0, event=1, edata=0x1148c40) at traffic_server/InkAPI.cc:1101
#2  0x00000000006cdb5f in Continuation::handleEvent (this=0x1632ec0, event=1, data=0x1148c40) at /home/scw00/trafficserver/iocore/eventsystem/I_Continuation.h:190
#3  0x00000000009a3726 in EThread::process_event (this=0x1170d50, e=0x1148c40, calling_code=1) at UnixEThread.cc:126
#4  0x00000000009a38f7 in EThread::process_queue (this=0x1170d50, NegativeQueue=0x137ce10, ev_count=0x137ce08, nq_count=0x137ce0c) at UnixEThread.cc:165
#5  0x00000000009a3b97 in EThread::execute_regular (this=0x1170d50) at UnixEThread.cc:225
#6  0x00000000009a3f0d in EThread::execute (this=0x1170d50) at UnixEThread.cc:324
#7  0x00000000009a2bb9 in spawn_thread_internal (a=0x127da50) at Thread.cc:92
#8  0x00007ffff6700dd5 in start_thread () from /lib64/libpthread.so.0
#9  0x00007ffff5a06ead in clone () from /lib64/libc.so.6
(gdb) f 4
#4  0x00000000009a38f7 in EThread::process_queue (this=0x1170d50, NegativeQueue=0x137ce10, ev_count=0x137ce08, nq_count=0x137ce0c) at UnixEThread.cc:165
165	      process_event(e, e->callback_event);
(gdb) p current_
current_metric    current_position  current_rtmax     current_rtmin
(gdb) p current_
current_metric    current_position  current_rtmax     current_rtmin
(gdb) p current_metric->_count
$1 = 14
(gdb) c 10
Will ignore next 9 crossings of breakpoint 1.  Continuing.
imm event
imm event
imm event
imm event
imm event
imm event
imm event
imm event
imm event
imm event

Thread 3 "[ET_NET 0]" hit Breakpoint 1, imm_handler (contp=0x1632ec0, event=TS_EVENT_IMMEDIATE, edata=0x1148c40) at imm.cc:13
13	  printf("imm event\n");
(gdb) f 4
#4  0x00000000009a38f7 in EThread::process_queue (this=0x1170d50, NegativeQueue=0x137ce10, ev_count=0x137ce08, nq_count=0x137ce0c) at UnixEThread.cc:165
165	      process_event(e, e->callback_event);
(gdb) p current_metric->_count
$2 = 14
(gdb) c 10
Will ignore next 9 crossings of breakpoint 1.  Continuing.
imm event
imm event
imm event
imm event
imm event
imm event
imm event
imm event
imm event
imm event

Thread 3 "[ET_NET 0]" hit Breakpoint 1, imm_handler (contp=0x1632ec0, event=TS_EVENT_IMMEDIATE, edata=0x1148c40) at imm.cc:13
13	  printf("imm event\n");
(gdb) p current_metric->_count^CQuit
(gdb) f 4
#4  0x00000000009a38f7 in EThread::process_queue (this=0x1170d50, NegativeQueue=0x137ce10, ev_count=0x137ce08, nq_count=0x137ce0c) at UnixEThread.cc:165
165	      process_event(e, e->callback_event);
(gdb) p current_metric->_count
$3 = 14
(gdb)
$4 = 14
(gdb)
Display all 191 possibilities? (y or n)
(gdb) q
A debugging session is active.

	Inferior 1 [process 203528] will be killed

That is interesting. My test code says it doesn't change at all. You must run one single thread.
I still don't understand why it can not be a dead loop.
Assume you are here https://github.com/apache/trafficserver/blob/14aadf430d04ec8435df7f891443194921d35d05/iocore/eventsystem/UnixEThread.cc#L159-L181
And process the imm_handler event (in test code). imm_handler will re-schedule a imm event to local_queue and and dequeue, enqueue, dequeue, enqueue forever (The same as EventQueue case).

As I said, The plugin should not assume all events schedule imm. But it would be great to check net events between loops. So I'm ok with this change.

@scw00 the code has changed since your last comment, I was referring to the code where we use priority queue there shouldn't be a dead loop. https://github.com/apache/trafficserver/commit/21dd44f8968018c2ba2888678a61b2b399a66213

I was referring to the code where we use priority queue there shouldn't be a dead loop

priority queue has same case.

[approve ci clang-analyzer]

[approve ci clang-analyzer]

@bryancall and @zwoop are still blocking - I think this is ready to land.

also seeing this 60ms delay on ATS 7.1.8
see below strace output.
ATS reading client network request
23253<PHONE_NUMBER>.638323 readv(326socket:25905337,  <unfinished ...>
23253<PHONE_NUMBER>.638730 readv(326socket:25905337,  <unfinished ...>
23253<PHONE_NUMBER>.638669 <... readv resumed> [{iov_base="GET /4M?video=4&segment=8 HTTP/1.1\r\nHost: <IP_ADDRESS>\r\nUser-Agent: Go-http-client/1.1\r\nAccept-Encoding: gzip\r\n\r\n", iov_len=3200}], 1) = 112 <0.000338>
23253<PHONE_NUMBER>.638773 <... readv resumed> [{iov_base=0x7f8df80743f0, iov_len=3088}], 1) = -1 EAGAIN (Resource temporarily unavailable) <0.000035>
ATS READ OBJECT HEADER
23395<PHONE_NUMBER>.639030 pread64(313</dev/ram6>,  <unfinished ...>
23395<PHONE_NUMBER>.639095 <... pread64 resumed> "\0"..., 2560, 67320320) = 2560 <0.000055>
ATS READ OBJECT BODY
23391<PHONE_NUMBER>.639503 pread64(313</dev/ram6>,  <unfinished ...>
23391<PHONE_NUMBER>.640905 <... pread64 resumed> ""..., 4194304, 63125504) = 4194304 <0.001394>
??? 60ms later NET thead resumes ??
23253<PHONE_NUMBER>.698987 <... epoll_wait resumed> [], 32768, 60) = 0 <0.060165>
23253<PHONE_NUMBER>.702170 writev(326socket:25905337, [{iov_base="HTTP/1.1 200 OK\r\nServer: ATS/7.1.8\r\nDate: Wed, 08 Jan 2020 19:16:24 GMT\r\nContent-Type: application/octet-stream\r\nContent-Length: 4194304\r\nLast-Modified: Thu, 02 Jan 2020 01:19:59 GMT\r\nETag: "5e0d453f-400000"\r\nAccept-Ranges: bytes\r\nAge: 2851\r\nConnection: keep-alive\r\n\r\n", iov_len=268}, {iov_base="\n-\275\231\220\0?\241m5\252kEc\31Pf\210\244\205\312\5I\253U\240\33\227\326d\305e"d...., iov_len=4194232}], 2 <unfinished ...>

I see the 60ms delay in ATS 9x. TTMS is logged after the cache status(TCP_HIT)
1578612674|09/Jan/2020:23:31:14 -0000|<IP_ADDRESS>|37399|<IP_ADDRESS>|-|126|200|TCP_HIT|9|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=4&segment=0|application/octet-stream|NONE|0|"22511"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612674|09/Jan/2020:23:31:14 -0000|<IP_ADDRESS>|36257|<IP_ADDRESS>|-|126|200|TCP_HIT|9|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=3&segment=0|application/octet-stream|NONE|0|"22511"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612674|09/Jan/2020:23:31:14 -0000|<IP_ADDRESS>|47733|<IP_ADDRESS>|-|126|200|TCP_HIT|66|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=1&segment=0|application/octet-stream|NONE|0|"22511"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612674|09/Jan/2020:23:31:14 -0000|<IP_ADDRESS>|47733|<IP_ADDRESS>|-|126|200|TCP_HIT|6|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=1&segment=1|application/octet-stream|NONE|0|"22448"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612674|09/Jan/2020:23:31:14 -0000|<IP_ADDRESS>|36257|<IP_ADDRESS>|-|126|200|TCP_HIT|7|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=3&segment=1|application/octet-stream|NONE|0|"22510"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612674|09/Jan/2020:23:31:14 -0000|<IP_ADDRESS>|44289|<IP_ADDRESS>|-|126|200|TCP_HIT|7|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=2&segment=1|application/octet-stream|NONE|0|"22510"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612674|09/Jan/2020:23:31:14 -0000|<IP_ADDRESS>|58321|<IP_ADDRESS>|-|126|200|TCP_HIT|125|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=2&segment=0|application/octet-stream|NONE|0|"22449"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612674|09/Jan/2020:23:31:14 -0000|<IP_ADDRESS>|37399|<IP_ADDRESS>|-|126|200|TCP_HIT|65|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=4&segment=1|application/octet-stream|NONE|0|"22510"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612675|09/Jan/2020:23:31:15 -0000|<IP_ADDRESS>|58321|<IP_ADDRESS>|-|126|200|TCP_HIT|5|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=2&segment=2|application/octet-stream|NONE|0|"22510"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612675|09/Jan/2020:23:31:15 -0000|<IP_ADDRESS>|47733|<IP_ADDRESS>|-|126|200|TCP_HIT|7|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=1&segment=2|application/octet-stream|NONE|0|"22510"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612675|09/Jan/2020:23:31:15 -0000|<IP_ADDRESS>|36257|<IP_ADDRESS>|-|126|200|TCP_HIT|67|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=3&segment=2|application/octet-stream|NONE|0|"22479"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612675|09/Jan/2020:23:31:15 -0000|<IP_ADDRESS>|37399|<IP_ADDRESS>|-|126|200|TCP_HIT|67|FIN|269|4194304|4194573|GET|http|<IP_ADDRESS>|/4M?video=4&segment=2|application/octet-stream|NONE|0|"22479"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1

Testing ATS master 10. Downloaded at 1-9-20 4pm CT.
I don't see the random 60+ms TTMS
1578612558|09/Jan/2020:23:29:18 -0000|<IP_ADDRESS>|40818|<IP_ADDRESS>|-|91|200|TCP_HIT|6|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M|application/octet-stream|NONE|0|"22444"|"curl/7.58.0"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|52451|<IP_ADDRESS>|-|126|200|TCP_HIT|7|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=2&segment=0|application/octet-stream|NONE|0|"22349"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|42613|<IP_ADDRESS>|-|126|200|TCP_HIT|6|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=1&segment=0|application/octet-stream|NONE|0|"22411"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|35671|<IP_ADDRESS>|-|126|200|TCP_HIT|7|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=4&segment=0|application/octet-stream|NONE|0|"22411"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|48159|<IP_ADDRESS>|-|126|200|TCP_HIT|15|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=3&segment=0|application/octet-stream|NONE|0|"22411"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|42613|<IP_ADDRESS>|-|126|200|TCP_HIT|2|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=1&segment=1|application/octet-stream|NONE|0|"22348"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|35671|<IP_ADDRESS>|-|126|200|TCP_HIT|3|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=4&segment=1|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|48159|<IP_ADDRESS>|-|126|200|TCP_HIT|4|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=3&segment=1|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|52451|<IP_ADDRESS>|-|126|200|TCP_HIT|5|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=2&segment=1|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|42613|<IP_ADDRESS>|-|126|200|TCP_HIT|2|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=1&segment=2|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|35671|<IP_ADDRESS>|-|126|200|TCP_HIT|3|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=4&segment=2|application/octet-stream|NONE|0|"22379"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|48159|<IP_ADDRESS>|-|126|200|TCP_HIT|5|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=3&segment=2|application/octet-stream|NONE|0|"22379"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|52451|<IP_ADDRESS>|-|126|200|TCP_HIT|5|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=2&segment=2|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|42613|<IP_ADDRESS>|-|126|200|TCP_HIT|3|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=1&segment=3|application/octet-stream|NONE|0|"22409"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|35671|<IP_ADDRESS>|-|126|200|TCP_HIT|3|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=4&segment=3|application/octet-stream|NONE|0|"22409"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1

Testing ATS master 10. Downloaded at 1-9-20 4pm CT.
I don't see the random 60+ms TTMS
1578612558|09/Jan/2020:23:29:18 -0000|<IP_ADDRESS>|40818|<IP_ADDRESS>|-|91|200|TCP_HIT|6|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M|application/octet-stream|NONE|0|"22444"|"curl/7.58.0"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|52451|<IP_ADDRESS>|-|126|200|TCP_HIT|7|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=2&segment=0|application/octet-stream|NONE|0|"22349"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|42613|<IP_ADDRESS>|-|126|200|TCP_HIT|6|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=1&segment=0|application/octet-stream|NONE|0|"22411"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|35671|<IP_ADDRESS>|-|126|200|TCP_HIT|7|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=4&segment=0|application/octet-stream|NONE|0|"22411"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|48159|<IP_ADDRESS>|-|126|200|TCP_HIT|15|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=3&segment=0|application/octet-stream|NONE|0|"22411"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|42613|<IP_ADDRESS>|-|126|200|TCP_HIT|2|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=1&segment=1|application/octet-stream|NONE|0|"22348"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|35671|<IP_ADDRESS>|-|126|200|TCP_HIT|3|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=4&segment=1|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|48159|<IP_ADDRESS>|-|126|200|TCP_HIT|4|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=3&segment=1|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612574|09/Jan/2020:23:29:34 -0000|<IP_ADDRESS>|52451|<IP_ADDRESS>|-|126|200|TCP_HIT|5|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=2&segment=1|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|42613|<IP_ADDRESS>|-|126|200|TCP_HIT|2|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=1&segment=2|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|35671|<IP_ADDRESS>|-|126|200|TCP_HIT|3|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=4&segment=2|application/octet-stream|NONE|0|"22379"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|48159|<IP_ADDRESS>|-|126|200|TCP_HIT|5|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=3&segment=2|application/octet-stream|NONE|0|"22379"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|52451|<IP_ADDRESS>|-|126|200|TCP_HIT|5|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=2&segment=2|application/octet-stream|NONE|0|"22410"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|42613|<IP_ADDRESS>|-|126|200|TCP_HIT|3|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=1&segment=3|application/octet-stream|NONE|0|"22409"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1
1578612575|09/Jan/2020:23:29:35 -0000|<IP_ADDRESS>|35671|<IP_ADDRESS>|-|126|200|TCP_HIT|3|FIN|270|4194304|4194574|GET|http|<IP_ADDRESS>|/4M?video=4&segment=3|application/octet-stream|NONE|0|"22409"|"Go-http-client/1.1"|-|-|0|FIN|0|0|000|HTTP/1.1|-|-|-|-1

I don't think this is the same delay as in the PR. Please see the testing method showed at the top.

@duke8253 thanks i may be dealing with an environment/build issue.. still working through isolating things.. i will report back to the community with my findings.. with a new issue if needed.

#6104 is required for this to cherry-pick cleanly.

@oknet Are you OK with the changes that were made?  Did it resolve your issue?

@bryancall
The issue I described on Jan 16 has been resolved.
But I think it may cause unknown issues.
Compares to 6.0.x branch, the local queue of external queue is used

To schedule an event for later retry (process_event()).

to avoid infinite retry operations

To reschedule the event which called back the state machine itself (Event::schedule_imm()).

to avoid current thread being monopolized by a state machine

To schedule a low-priority Continuation and ensures that the Continuation is always called back if it is not called back from the high-priority subsystem (CacheVC::do_io_read()).

to avoid affecting the sleep of EThread because the Event may be cancelled before the next loop starts.

From the PR #2541 merged to the present, we have made changes to meet new requirements, but we have not carefully evaluated what we will lose.
EventSystem is the core of ATS and it drives all subsystems. The design must balance all subsystems. I believe that the network subsystem prefers this PR because it makes the network subsystem more efficient, but other subsystems may not like it.

The delay is gone after applying the fix in this PR.

We good on this one now?

Talked with @SolidWallOfCode @shinrich @bryancall and got the go ahead to merge.

Cherry-picked to v9.0.x branch.


build folder gets huge

Hi, first of all: thanks for the great work. Very helpful!
One question: when running in hot reload the build folders does not empty automatically and contains thousands of files after a while. Am I doing something wrong -- or how can I avoid it?
Thanks
Leander

should be fixed!


Handle ID field that is a number

I'm receiving the following error because my ID field is an integer and there's no way for me to specify an alternative idField prop for me to pass in my uuid field name.
Uncaught TypeError: t.id.toLowerCase is not a function
    at n.addTag

@dschoon this should be fixed in the latest version.

Yes i am also facing this problem because when we intergrate api then id is number not a string and they have used string so i am getting same error

id is a required field if you are passing tags since https://github.com/prakhar1989/react-tags/releases/tag/v5.0.0 so please make sure you pass id as string

when we integrate api with frontend id is always an integer so how can we use it as a string.
I use react for frontend and spring boot for backend so my id field in an integer not an string. you should give an option for use both of them(string and integer) for id field.

Yess you are right mongodb, firebase stores id as a string. i m agree with you but most commonly we use integer that i wanted to say. lets leave that... will we get solution for that in upcoming days??

@bipindubey-technoark as I said there are reasons as mentioned above why its a string instead of a number and that's why.
it was a breaking change.
I am not sure If I will be able to look into it sooner.
But as far as I understand in your case if you are storing the id as an integer fore each. tag,  the change should be to just update those to string or if that's not possible then before passing the prop tags to react tags you can convert the id to string. Is that not possible?

Ok


renamed private methods

I think we need a solution for the CI environment so it won't fail due to getting 429 HTTP codes.


Add cluster ISR/USR on backend

Add ISR & OSR params to cluster's payload

done https://github.com/provectus/kafka-ui/commit/01c2c8b20b3cf491b5ef3688c3ba92c251023acf


VSCode constantly showing Saving code actions

Type: Bug
Install the extension and make changes to .ts files
Extension version: 2.2.6
VS Code version: Code 1.73.0 (Universal) (8fa188b2b301d36553cbc9ce1b0a146ccb93351f, 2022-11-01T15:38:50.881Z)
OS version: Darwin x64 21.6.0
Modes:
Sandboxed: No
Connection to 'SSH: dev-dsk-hnooka-2c-e787708f.us-west-2.amazon.com' could not be established  Canceled

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz (12 x 2600)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
12, 16, 12

Memory (System)
16.00GB (0.85GB free)

Process Argv
--crash-reporter-id 7500aa39-2afe-41d9-9334-a0a2f53ed386

Screen Reader
no

VM
0%

Connection to 'SSH: dev-dsk-hnooka-2c-e787708f.us-west-2.amazon.com' could not be established  Canceled

A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383cf:30185419
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
pythonvspyl392:30443607
vserr242:30382549
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
vscorecescf:30445987
pythondataviewer:30285071
vscod805:30301674
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
cmake_vspar411:30581797
vsaa593:30376534
pythonvs932:30410667
cppdebug:30492333
vsclangdf:30486550
c4g48928:30535728
dsvsc012cf:30540253
azure-dev_surveyone:30548225
pyindex848cf:30577861
nodejswelcome1:30587005
fc301958:30595537
2e4cg342:30602488
gswce2:30605431
3d0df643:30604793
dbltrim-noruby:30604474
89544117:30607850

Please follow the steps outlined here https://github.com/microsoft/vscode-eslint/issues/1344 to further diagnose this.
If you can't solve this following the provided steps, please provide me with a Github repository I can clone that demos what you are seeing.

Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!


Certain unicode surrogate pair emoji are not recognized

Godot version
4.2.dev
System information
MacOS
Issue description
These emoji are not recognized correctly by Button, Label, TextEdit or RichTextLabel. They do render correctly in the editor, however:
U+2764 U+FE0F U+200D U+1F525 ; 13.1 # ❤🔥 heart on fire
U+2764 U+FE0F U+200D U+1FA79 ; 13.1 # ❤🩹 mending heart
U+0023 U+FE0F U+20E3 ; 0.6 # #⃣ keycap: #
U+002A U+FE0F U+20E3 ; 2.0 # *⃣ keycap: *
U+0030 U+FE0F U+20E3 ; 0.6 # 0⃣ keycap: 0
U+0031 U+FE0F U+20E3 ; 0.6 # 1⃣ keycap: 1
U+0032 U+FE0F U+20E3 ; 0.6 # 2⃣ keycap: 2
U+0033 U+FE0F U+20E3 ; 0.6 # 3⃣ keycap: 3
U+0034 U+FE0F U+20E3 ; 0.6 # 4⃣ keycap: 4
U+0035 U+FE0F U+20E3 ; 0.6 # 5⃣ keycap: 5
U+0036 U+FE0F U+20E3 ; 0.6 # 6⃣ keycap: 6
U+0037 U+FE0F U+20E3 ; 0.6 # 7⃣ keycap: 7
U+0038 U+FE0F U+20E3 ; 0.6 # 8⃣ keycap: 8
U+0039 U+FE0F U+20E3 ; 0.6 # 9⃣ keycap: 9
They do render if a smiley face precedes them in the text string, so it appears to be a bug in the unicode surrogate parsing.

Steps to reproduce
See MRP.
Minimal reproduction project
emoji_rendering_bugs.zip

Does your font contain these emoji?

Godot uses system fonts as a fallback, but support depends on the OS: https://docs.godotengine.org/en/latest/tutorials/ui/gui_using_fonts.html#using-emoji

The editor directly includes default system emoji fonts as a fallback. Project use automatic fallback, so this should be an issue with auto fallback.

Here's a running project with the complete set - you can see only the mentioned emoji fail to render. The failing ones are all available in the OS. By-the-way, this is brilliant that this works in Godot 4 so well already!

@bruvzg Is there a String method that can return characters whereas an emoji is handled as a single character rather than a compound unicode? For example, simply to find how many emoji's are within a given string? This is related to how in TextEdit, it can take multiple caret shifts to cross certain emoji's.
Also, can the filter type currently applied to fallback system emoji be set somewhere? Godot emoji are slightly blurry as compared to the natively displayed emoji on MacOS.

Is there a String method that can return characters whereas an emoji is handled as a single character rather than a compound unicode?

No, but I take a look at implementing it, it should be possible to do with ICU.
The issue itself can be fixed by using a full script run to search for fallback (currently it's using first char to select font, that's why it's not working with multichar emojis), but this need to be tested to make sure it works with the strings that require multiple fallback fonts on all systems. So detecting a composite icon and using only it might be a better solution.
diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp
index b92082ee1b..85d7087384 100644
--- a/modules/text_server_adv/text_server_adv.cpp
+++ b/modules/text_server_adv/text_server_adv.cpp
@@ -5444,7 +5444,7 @@ void TextServerAdvanced::_shape_run(ShapedTextDataAdvanced *p_sd, int64_t p_star
 		// Try system fallback.
 		RID fdef = p_fonts[0];
 		if (_font_is_allow_system_fallback(fdef)) {
-			String text = p_sd->text.substr(p_start, 1);
+			String text = p_sd->text.substr(p_start, p_end - p_start);
 			String font_name = _font_get_name(fdef);
 			BitField<FontStyle> font_style = _font_get_style(fdef);
 			int font_weight = _font_get_weight(fdef);

Can project emoji font fallback also be set to use the default system emoji like the editor? The rendering works correctly if I set the font to the system emoji font, in this case Apple Color Emoji, but then we have to set for every platform.


CFFL

CFFL

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_c08rwnihmd/clone/recipe/meta.yaml:19: host_section_needs_exact_pinnings: Packages in host must have exact version pinnings, except python build tools.
ERROR: /tmp/abs_c08rwnihmd/clone/recipe/meta.yaml:21: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_c08rwnihmd/clone/recipe/meta.yaml:31: missing_pip_check: For pypi packages, pip check should be present in the test commands
ERROR: /tmp/abs_c08rwnihmd/clone/recipe/meta.yaml:35: incorrect_license: The recipe's about/license key is not an SPDX compliant license or license exception, reference https://spdx.org/licenses/
ERROR: /tmp/abs_c08rwnihmd/clone/recipe/meta.yaml:39: http_url: http://aiohttp-session.readthedocs.io/ is not https
ERROR: /tmp/abs_c08rwnihmd/clone/recipe/meta.yaml:39: missing_dev_url: The recipe is missing a dev_url
WARNING: /tmp/abs_c08rwnihmd/clone/recipe/meta.yaml:39: missing_description: The recipe is missing a description
Errors were found

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_4f18y2f91v/clone/recipe/meta.yaml:19: host_section_needs_exact_pinnings: Packages in host must have exact version pinnings, except python build tools.
ERROR: /tmp/abs_4f18y2f91v/clone/recipe/meta.yaml:21: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_4f18y2f91v/clone/recipe/meta.yaml:31: missing_pip_check: For pypi packages, pip check should be present in the test commands
ERROR: /tmp/abs_4f18y2f91v/clone/recipe/meta.yaml:35: incorrect_license: The recipe's about/license key is not an SPDX compliant license or license exception, reference https://spdx.org/licenses/
WARNING: /tmp/abs_4f18y2f91v/clone/recipe/meta.yaml:39: missing_description: The recipe is missing a description
ERROR: /tmp/abs_4f18y2f91v/clone/recipe/meta.yaml:39: http_url: http://aiohttp-session.readthedocs.io/ is not https
ERROR: /tmp/abs_4f18y2f91v/clone/recipe/meta.yaml:39: missing_dev_url: The recipe is missing a dev_url
Errors were found


Error in the CNN-LSTM_model file

I work with your model for a college project and while testing the code I got the
error below. I ran the code in Google colab and everything before worked without problems.

Hi! I think that's because you've converted the prediction DataArray to a Dataset which doesn't have the pcolormesh method.
You should be able to do:
m_pred.sel(time=yr).tas.plot.pcolormesh(...)

Thanks for your fast answer. Changing this worked for me.
I just double checked and the conversion to a dataset seems to be in your code too.


Add the start of a Git API

This allows you to get git branch information for a repo

Codecov Report

Merging #13 into master will increase coverage by 0.17%.
The diff coverage is 85.71%.

@@            Coverage Diff             @@
##           master      #13      +/-   ##
==========================================
+ Coverage      83%   83.17%   +0.17%
==========================================
  Files           9       10       +1
  Lines         200      214      +14
==========================================
+ Hits          166      178      +12
- Misses         17       18       +1
- Partials       17       18       +1

Impacted Files
Coverage Δ

vsts/build_definitions.go
77.77% <ø> (ø)
:arrow_up:

vsts/vsts.go
85.18% <100%> (+0.27%)
:arrow_up:

vsts/git.go
84.61% <84.61%> (ø)

Continue to review full report at Codecov.

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


frequentItemSetCount incorrect

Junit test code is:
File inputFile = new File("c:/data1.txt");
int frequentItemSetCount=1;
Apriori<NamedItem> apriori = new Apriori.Builder<>(frequentItemSetCount)
    .supportDelta(0.1).maxSupport(1.0).minSupport(0.0).create();
Iterator<Transaction<NamedItem>> iterator = new DataIterator(inputFile);
Output<NamedItem> output = apriori.execute(iterator);
SortedSet<ItemSet<NamedItem>> frequentItemSets = output.getFrequentItemSets();
System.out.println("frequentItemSets.size():"+frequentItemSets.size());
Iterator<ItemSet<NamedItem>> iteratorItemSet = frequentItemSets.iterator();

while (iteratorItemSet.hasNext()) {
    ItemSet<NamedItem> itemSet = (ItemSet<NamedItem>) iteratorItemSet.next();
    System.out.println("result ............."+ itemSet.toString());
}

data1.txt content is:
# Test data for the Apriori algorithm
# One transaction per line, items are separated with whitespaces

bread   butter  sugar
coffee  milk    sugar
bread   coffee  milk    sugar
coffee  milk

run result is :
frequentItemSets.size():4
result .............[coffee, milk]
result .............[sugar]
result .............[milk]
result .............[coffee]

frequentItemSetCount =1 but frequentItemSets.size()=4

This is not a bug, but normal behavior. Specifying a frequentItemSetCount does not guarantee, that exactly that many frequent item sets are found. It is just away to avoid that very few item sets are found, if the minimum confidence threshold has been chosen too restrictively. Depending on the given data set, it might not be possible to find as many item sets as specified. On very small data sets such as the one you used, it is very likely that more frequent item sets are returned. This isn't a bug either. The algorithm just successively decreases the minimum confidence (starting with 1.0 in your example) until  enough item sets have been found. If the minimum confidence, which is used in that last iteration, is reached by more item sets than specified, all of them are returned. This is intentional, because the algorithm cannot decide, which ones to include (they all reach the same minimum confidence and there is no criteria for measuring their quality besides that). Furthermore, if association rules should be generated in a second step, all of the frequent item sets must be used, otherwise the learned rules will be incomplete. If you only want to find a single item set in the given example, you must decide on your own, which item set to keep (probably the first one, because it is the only one including two items).
As a future improvement, it would be possible to return a custom implementation of the type SortedSet, which provides sort- and filter-methods such as the class RuleSet does. This would ease to manually filter the returned item sets, if too many are returned. The progress on that enhancement is from now on tracked here: https://github.com/michael-rapp/Apriori/issues/4


Removed sleep in favour of sleep_on_rate_limit. This makes this tool …

…blazing fast and more usable as a consequence.

Thank you! Merged in https://github.com/koenrh/delete-tweets/commit/d751b93c263fe008b6ae46a65b62d525d386abce.


Android build gradle taking > 1 hour to compile

Godot version:
Latest master (20/9/19) commit 2add51d
OS/device including version:
Linux Mint 18.2
Issue description:
Android is taking ages to compile (is still compiling right now, almost at an hour now, previously it would take 5-10 mins).
I am requesting a single architecture, armv7:
scons -j4 platform=android target=release_debug android_arch=armv7
cd platform/android/java
./gradlew build

Scons is compiling reasonably quickly as usual, however gradle seems to be taking ages and is also compiling cpps, apparently for every architecture? I'm not sure whether gradle used to compile any cpps before.

This shows it compiling x86, which I didn't request...
Also notable is the CPU usage seems to be very low in the compile process in task manager, 0%.
Steps to reproduce:
Download latest master, compile android with single architecture.
Edit : It has finished compiling, it took near 3 hours .. clearly something wrong.

Likely related to #31919, CC @m4gr3d.

@lawnjelly This is expected behavior, although it could use some improvement :)
The scons compile step is no longer needed as the gradle build is setup to compile the native libs automatically, so you can just run:
cd platform/android/java
./gradlew build

The reason it takes so long is, as you guessed, it's setup by default to compile for all architecture (defined here).
To speed up the build, you should comment out in the build.gradle file all the architectures you're not interested in (in this case, everything but armv7).
The documentation needs to be updated to reflect the new process (issue #2773), and I'll look into ways to automatically detect the desired architecture so as to avoid the long compile time.

@lawnjelly Also, allowing scons to build in parallel by adding for example , "-j12" at the end of the line: https://github.com/godotengine/godot/blob/a34b77e271da5f3d550acfac1e5557f2467c6266/platform/android/java/lib/build.gradle#L73
will significantly speed it up (depending on how many cpu cores you have)

@NeoSpark314 Is it possible to automatically detect the number of CPU threads in Gradle? If so, it would be nice to add it by default.

@Calinou good idea; yes; seems to be possible; I tried with
, "-j"+Runtime.runtime.availableProcessors()
and it works for me as expected. @m4gr3d do you think this can be added?

Ok I've tried the 2 edits to the build gradle, limiting the architecture to armv7, and adding "-j4" to the list of arguments to scons.
When I change a source file, it seems to be building a library libgodot.android.opt.armv67.neon.so in bin folder, however android_debug.apk and android_release.apk are unchanged, also the apks in android/java/build/outputs/apk are unchanged, so as far as I can see I can't export the changes?

It seems the resulting .apk are now in an app folder: platform/android/java/app/build/outputs/apk/

I also just noticed that #32248 is needed to make it work; and to compile the actual templates the call is ./gradlew generateGodotTemplates that outputs the .apks then directly in the main godot/bin folder. (the apks in the app/build folder are not the final export templates).

PR #32269 should resolve this issue.
@Calinou @NeoSpark314 Thanks for the tip about detecting the number of cpu in gradle. I've added it to the gradle build tasks.

perhaps @m4gr3d might be interested in improvement
https://github.com/godotengine/godot/issues/32270

...seriously i just build the thing and... a hour has passed and it still grind the disk with cpu usage at 0-5 percent even after adding -jx to args "--directory=${pathToRootDir}", "platform=android", "target=${releaseTarget}", "android_arch=${abi}" :clock10:
i have feeling like, before it's been MUCH faster to build templates....

@m4gr3d  tested PR https://github.com/godotengine/godot/pull/32269
i used
cd platform/android/java
call "gradlew.bat" generateGodotTemplates -Pandroid_arch=armv7

Its been compiling for around 10 minutes at  ~85% of CPU utilization
then it reads 'progress_finish' like shown below
Compiling ==> thirdparty\freetype\src\type42\type42.c
Compiling ==> thirdparty\freetype\src\winfonts\winfnt.c
Compiling ==> thirdparty\freetype\src\sfnt\sfnt.c
Copy("platform\android\java\lib\libs\debug\armeabi-v7a\libc++_shared.so", "C:\Users\dev\AppData\Local\Android\Sdk\ndk-bundle\sources\cxx-stl\llvm-libc++\libs\armeabi-v7a\libc++_shared.so")
Linking Static Library ==> modules\freetype\libfreetype_builtin.android.debug.armv7.neon.a
progress_finish(["progress_finish"], [])

then CPU usage has fallen to 1% and stays like this for 1.5 hour

2 hours allready passed and it still didnt finished.
before it's not been that long. ...i think something's wrong and perhaps i will just cancel.

@avril-gh from the screenshot, it looks like you're using cmd.exe. If so, it's working as expected and finishing quickly like you saw, but because of the console limitation, cmd.exe doesn't update correctly.
You can try using a better shell like powershell.exe.
Note, if using powershell.exe, you'll have to quote the command arguments (e.g: .\gradlew.bat generateGodotTemplates "-Pbuild_target=debug,release" "-Pandroid_arch=armv7,arm64v8")

Also you can validate that the first build finished correctly by looking inside the godot/bin directory.
On completion, that directory should contain the generated build templates (e.g: android_debug.apk for debug build_target, android_release.apk for release build_target, and android_source.zip)

i rerun it with
gradlew generateGodotTemplates -Pandroid_arch=armv7 -Pbuild_target=debug,release
and it finished in 25 minutes

Looks within norms. Running with the debug build target only took you ~10min, so with both debug and release, 25min seems normal since the release build is usually a bit slower than the debug one.

theres a problem tho
i used android_arch=armv7 and in release apk i got lib\armeabi-v7a as expected, however in debug apk i got additionaly lib\arm64-v8a even tho i didnt requested it in cmd line.

@avril-gh the included 'extras' are normal :). If you don't clean them, the artifacts generated from previous builds remain around, and the gradle build include them when generating the apk.
It doesn't take any additional time to include them since they're already generated, so nothing to worry about here.

Lets wait for it to be merged and more people join testing.


Trigger release jobs in other repos.

Adds a step to the release workflow that notifies other repos that a release is being built for a specific commit.
This lets us trigger release workflows on other repos so we test all our examples when we test our main repo.
It should work for tagged releases and the nightly main release job.
Proof of concept is the oso-flask-integration repo.
Here's the workflow that is triggered by this event.
https://github.com/osohq/oso-flask-integration/blob/main/.github/workflows/test_release.yml
It's not  really possible to main the release workflow dependent on all these other release workflows succeeding so I think we need to add success/failure messages in slack for all the release workflows so we see if a nightly or tag build breaks anything and as part of the end of sprint release process make sure all these downstream release jobs succeeded before publishing.

It's not really possible to main the release workflow dependent on all these other release workflows succeeding so I think we need to add success/failure messages in slack for all the release workflows so we see if a nightly or tag build breaks anything and as part of the end of sprint release process make sure all these downstream release jobs succeeded before publishing.

Did you consider doing the same process (cloning repo + running the tests), but where the osohq/oso repo clones the example repository? We could run that process on every merge to main, for example. Especially if we add them all as submodules like we have done with the quickstarts? Then they would all be accessible through this repo.
OTOH, I quite like this approach. It prevents us from adding too much bloat to this repo. And the trigger + slack notify seems like a fine approach to me.


"Required" Text Inputs Allow Only Spaces as Valid

When filling in a form on form.io itself, a series of spaces is not valid for a required text field or text area. This is as expected:

When filling in the same form in a react app using react-formio this same input is considered valid and the submission is allowed. This is not as expected:

Thanks

react-formio verson: 3.1.12
formio version: Github 1.17.4

Thanks for the find! This does look like an issue in the newer version of our renderer. AngularJs is probably doing a trim() on the input before it goes to validation. We should probably do something similar on newer versions. Is this something you could fix or would you like to wait for us to fix?

I'm happy to wait for now as I've got other things to work on as well but if I finish all of those I may see if I can have a look.
Thanks

I am closing the issue as it was created too long ago and there are no new comments here. I hope it was resolved. If not, please reopen it. Thanks!


Unable to activate device when using gaster to tether boot.

I have been using Gaster to tether boot into iOS 14 and for some reason I get this issue,

the thing is using ipwnder_lite or ipwndfu with linus sigchecks remover it activates just fine.

I get this issue when I run ipwndfu. I don't think this is a gaster issue. I downgraded from 15.5 to 14.2 and I get the same exact issue that your getting. What are the commands that you used for ipwnder_lite to get it to boot? I know you said that ipwnder_lite also works so I just want to know what commands you used to get it to boot. I know the last command is ./boot.sh but what should I do before that so it works with ipwnder_lite.

I'm facing this error, too. Do you find any solution?

I am getting the same issue here, hope will be fixed asap. @0x7ff

I have been using Gaster to tether boot into iOS 14 and for some reason I get this issue,  the thing is using ipwnder_lite or ipwndfu with linus sigchecks remover it activates just fine.

seem last commit : revert; fix this issue, can you retry?

I have been using Gaster to tether boot into iOS 14 and for some reason I get this issue,  the thing is using ipwnder_lite or ipwndfu with linus sigchecks remover it activates just fine.

seem last commit : revert; fix this issue, can you retry?

yeah last time I used gaster it worked so


Will TPKeyboardAvoding work on UISplitViewController on iPad?

Imagine there is a SplitViewController on iPad, the master view controller on the left and the detail view controller on the right, the first responder is focus on the left view controller and keyboard pop up, when I touch on the detail view controller ,I also need dismiss the keyboard . Is there any way to use TPKeyboardAvoiding to handle this situation?

I'm afraid not; you'll need to set up your own gesture recogniser or something.
Sent from my iPhone

On 30 May 2016, at 8:35 PM, Roger<EMAIL_ADDRESS>wrote:
Imagine there is a SplitViewController on iPad, the master view controller on the left and the detail view controller on the right, the first responder is focus on the left view controller and keyboard pop up, when I touch on the detail view controller ,I also need dismiss the keyboard . Is there any way to use TPKeyboardAvoiding to handle this situation?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Develop branch: Emails with 8bit transfer-encoding and utf8 charset don't work

Getting pretty glad I did that refactor to make it easy to add broken test messages ;)
Failing test coming right up.

Thanks for the test case! Will investigate.

Appears to be fixed in PR #747. Thanks @timthelion !


Chore: fix readme

Following #152 , this PR correct the readme to mention the github issue tracker (instead of the old jira) + other fixes to help users

Hello @imonteroperez can I ask you to review (if you have time) this PR to check that every blockers you had today have been addressed on the readme. Many thanks!
If no feedbacks the 12 of April, then we'll proceed to merge (that would mean that you don't have time or not willing to ;) )


(chore) Add tests

We should include at leasts some tests to ensure every push to master is fine.

Scoped this out with Jest and RobotJS.
const ioHook = require('./index')
const robot = require("robotjs");

// The assertion for a promise must be returned.
it('receives the text "Hello World"', async (done) => {
    let currentKey = 0;

    const actualCharacters = [];
    const expectedChracters = ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'];

    const eventCallback = (event) => {
        actualCharacters.push(String.fromCharCode(event.keychar))

        if (currentKey === expectedChracters.length) {
            expect(actualCharacters).toEqual(expectedChracters);
        }

        currentKey += 1;
        done();
    };

    ioHook.on('keypress', eventCallback);
    ioHook.start()

    robot.typeString("Hello World");
});

This is great! Do you want to put this in a PR? Currently merging all the existing ones. Thanks !

Let's write a test for the shortcuts and maybe test the mouse.

@DCzajkowski it seems that the test are not passing on CI https://travis-ci.org/WilixLead/iohook/jobs/378076504

Not really. BUT, I have hard time building the whole thing because of version mismatches etc. I don't think it's my code that broke anything, because I have not touched anything regarding builds... So I have no clue what causes Travis to fail

Actually it is the tests not passing :). I think I will silence them for now.

Ehh... Do you know how to fix them?

This could help: https://github.com/facebook/jest/issues/5123

Closing as stale.


support cuda toolkit version: 11.7

This PR adds support for CUDA Toolkit 11.7

This looks great! Just will need to add nccl & cudnn.
You can extract these inside docker pull nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04 if you don't have access to nccl/cudnn on whatever machine you produced these on!

This looks great! Just will need to add nccl & cudnn.
You can extract these inside docker pull nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04 if you don't have access to nccl/cudnn on whatever machine you produced these on!

This looks great! Just will need to add nccl & cudnn.
You can extract these inside docker pull nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04 if you don't have access to nccl/cudnn on whatever machine you produced these on!

ok, thanks!
I've added two files about nccl & cudnn

1 src/cudnn/sys/sys_11070.rs
2 src/nccl/sys/sys_11070.rs

Yay perfect, thanks

Hmm looks like there were some pretty breaking changes for cudnn/nccl on 11.7 (getting errors when trying to compile for that version in the safe apis). Will need to think about that


Handle NNBD in Function::HasSameTypeParametersAndBounds

Function::HasSameTypeParametersAndBounds should treat top types as equivalent, and in weak mode should disregard nullability of bounds (currently it only disregards difference between legacy and non-nullable, and still treats nullable as distinct).

/cc @crelier


Release 1.2.4

#8 fix.
@PaulRB Please test on your x4, x5 and also the 328 again.
If it works, I will merge it.
1.2.4 Release (21.03.2016)
* Fixed Attinyx4/x5 Issue #8

Now my newbie status with GitHub is my problem! What is the best way for me to download 1.2.4?

git clone https://github.com/NicoHood/PinChangeInterrupt.git
Or for micro$$$$: https://github.com/NicoHood/PinChangeInterrupt/tree/dev

OK, thanks. Testing on tiny84 now.
PC Int on pins 0, 2, 3, 4, 5, 6, 7 works!
PC Int on pins 1, 8, 9, 10 does not work. I verified my wiring is correct in the same way as before.
Partial success. Should I go on to test '85 and Nano or wait for you to fix?

Now testing on Nano 3:
PC Int on pins 8, 9, 10, 11, 12, 13 works!
PC Int on pins 2, 3, 4, 5, 6, 7, A0, A1, A2, A3, A4, A5 does not work. They did before (at least some of them)
A port related problem?

Please redownload. Thx for testing.
Now please also test for 85 and 328 please. That'd be super nice.

No improvement, on '84 or Nano. How can I be sure I have your latest changes? I deleted PinChangeInterrupt folder from sketchbook/libraries and re-downloaded Zip from your link above to replace it, and re-started IDE.

Pin5 works on my nano. Restart the IDE and redownload the lib.

Please accept my apologies, I can't explain my earlier results with nano. Works OK now for any pin.
Re-testing the '84, it is still working on some pins and not others, like before.
I will re-test '85 later, maybe tomorrow. I have run out of breadboards and must dissasemble the '84 circuit to make the '85 circuit.
I guess you do not have an '84 for testing?
Thanks again for your work on this!

I do not have a 84. Its weird that it does not work like this.
If you still have problems report which pins work and which not. (and the pin layout please, i need port numbers, not pin labels)

ATtiny84:
Ard Pin    Port Pin    PCInt    Status
0          PA0         PCINT0   Working
1          PA1         PCINT1   Not working
2          PA2         PCINT2   Working
3          PA3         PCINT3   Working
4          PA4         PCINT4   Working
5          PA5         PCINT5   Working
6          PA6         PCINT6   Working
7          PA7         PCINT7   Working
8          PB2         PCINT10  Not working
9          PB1         PCINT9   Not working
10        PB0         PCINT8   Not working

That is weird. Are you sure that the 328 works on all pins? Also PCINT1 should work. I see no reason why it should not.
I will do some compilation tests later when i am home again.

Nano 3 (ATmegs328):
Arduino pins 2,3,4,5,6,7,8,9,10,11,12,13,A0,A1,A2,A3,A4,A5 Working
Only pins not working:

0,1.  These are TX & RX, so I'm not sure they would work with PC Ints
A6,A7. I seem to remember these are analog only, can't be used as digital input

I manually disabled portb on attiny x4:
https://github.com/NicoHood/PinChangeInterrupt/blob/master/src/PinChangeInterruptSettings.h#L217
Or dont you use an crystal on the attiny? What do you think? should i enable those pins?
However If we keep it disabled I neet to add an asterisk here:
https://github.com/NicoHood/PinChangeInterrupt#pinchangeinterrupt-table
Pin1 should work though. Are you sure it is not connected to any other hardware?

ATtiny85:
All pins 0,1,2,3,4 working for PC ints
ATtiny84:
I have only ever used internal oscillator.
Nothing else attached to pin 1. Remember my breadboard photos from https://github.com/NicoHood/PinChangeInterrupt/issues/8 ?

This output shows, that something compiles wrong:
https://github.com/NicoHood/PinChangeInterrupt/issues/8#issuecomment-199256025
I will try to fix pin1 and suggest to keep portB disabled, as it shrinks the code size a lot more.

This was the error: https://github.com/NicoHood/PinChangeInterrupt/commit/d3b05998c938a0b2261bec2bb0363662e39dc5e5
However I am still wondering why port1 did not work. also your ouput clearly shows that it should have compiled before. Now it is clear that it does not work, as I have deactivated it. I will try again later.
Now all portA pins should work as expected. PortB I have to take a look at, however it will stay deactivated in the default settings.

Please try this branch and check if all x4 pins work (the one on Port1 aka PB, not port0):
https://github.com/NicoHood/PinChangeInterrupt/tree/allx4
And also try this and report port1 (PB):
https://github.com/NicoHood/PinChangeInterrupt/tree/e0c2a2d0d4b9deaac8d145d63bc6c46101d37711

@NicoHood, the allx4 version has corrected pc int on arduino pin 1! Congratulations! However, pc int is still not working on arduino pins 8, 9, 10 (=PB). I am not sure what you meant by "all x4 pins". There are only 3 pins on port PB, unless you include the reset pin. I do not know how to change the reset pin to be an input pin, and I am concerned that if I try, I could brick my '84.
With the second link, pc ints do not work on arduino pins 8, 9, 10 either. Also Arduino pin 1 does not work on this version.

Okay the allx4 pins branch should work with all 84 pins (especially focussed on 8,9, 10). I will try to find the issue, and let you know. And yes, disabling reset bricks your device in most of the cases, nevermind that.
There are different sleep modes. Some of them work with the interrupts, some not. The best way to look this up is the datasheet. However I never tried this. Here is one example: http://playground.arduino.cc/Learning/ArduinoSleepCode

For now it takes me too much time to find the bug without hardware. I'd need to get an attiny 84 sample or someone else needs to debug it. However this SHOULD be debugged, as there might be other issues.
The last thing you can do is to add the following at the beginning of setup():
PCMSK1  |= 0xff; // enable all 4 PORTB pins (normally we only use 1)
GIMSK |= (1<<PCIE1); // enable PORTB PCINT

This SHOULD work. If it does not, replace all "1" with "0" and check the PORTA again.
Otherwise there must go something wrong with the attaching of the function pointer.

You still here?

Hi Nico, sorry, busy with personal stuff, will get around to doing those tests soon.

@NicoHood, that did the trick! Pin interrupts now working on Arduino pins 8, 9 & 10.
#include "PinChangeInterrupt.h"

#define BUTTON  10
#define LED 1

void setup() {

  PCMSK1  |= 0xff; // enable all 4 PORTB pins (normally we only use 1)
  GIMSK |= (1 << PCIE1); // enable PORTB PCINT

  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  attachPCINT(digitalPinToPCINT(BUTTON), buttonInterrupt, CHANGE);

}

void buttonInterrupt() {
  digitalWrite(LED, digitalRead(BUTTON));
}

void loop() {
  //digitalWrite(LED, digitalRead(BUTTON));
}

If it does not, replace all "1" with "0" and check the PORTA again.

Did not understand what you meant by that. Hopefully this does not matter

Now try to comment PCMSK1... and try again.
Then comment GIMSK... instead and try.
It seems one of those two are not set properly by the Library.
Thx for the feedback!

This line is needed:
 PCMSK1  |= 0xff; // enable all 4 PORTB pins (normally we only use 1)
This line is not needed, pc interrupts still work with it commented out:
 //GIMSK |= (1 << PCIE1); // enable PORTB PCINT

Finally!
https://github.com/NicoHood/PinChangeInterrupt/tree/allx4
Now try to use the library as usual with all attiny 84 pins again. It should finally all work.
This is the patch, if you are interested:
https://github.com/NicoHood/PinChangeInterrupt/commit/8ef075dfcb32bea08e8c89238686c61dc7a0983d
The problem is (if you look at the datahsheet) those 2 registers are normally next to each other while they are not for attiny.
Even if it works, the new version 1.2.4 will still have them disabled by default. This is because it safes a lot of flash and those 4 pins can be used for better functions normally. You can activate them in the Settings.h though.

OK. I deleted my PinChangeInterrupt folder from libraries and downloaded the zip from your link above, extracted the contents to libraries and renamed the folder from "PinChangeInterrupt-allx4" to "PinChangeInterrupt". Then I restarted the IDE and loaded this code:

#include "PinChangeInterrupt.h"

#define BUTTON  0
#define LED 1

void setup() {

  //PCMSK1  |= 0xff; // enable all 4 PORTB pins (normally we only use 1)
  //GIMSK |= (1 << PCIE1); // enable PORTB PCINT

  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  attachPCINT(digitalPinToPCINT(BUTTON), buttonInterrupt, CHANGE);

}

void buttonInterrupt() {
  digitalWrite(LED, digitalRead(BUTTON));
}

void loop() {
  //digitalWrite(LED, digitalRead(BUTTON));
}

Pin change interrupts work on Arduino pins 0 to 7 but don't work on 8, 9, 10. To make it work with 8, 9, 10, I still have to insert the line
  PCMSK1  |= 0xff; // enable all 4 PORTB pins (normally we only use 1)
Did you intend that I should edit Settings.h in the new download?

Nah, just download and try again. Nothing to modify. I tried to fix it again.

Well done Nick. PC ints now working on all '84 pins without having to set PCMSK1 or GIMSK. (RESET not tested, as discussed before. Thanks for your work fixing this!
Should I close the issue now, or will you do that?

I will merge the commits, prepare a release and finally close the issue.
Thanks for all the help!


doc(custom-attribute): switch to automatic private constructor props

This switches to a more idiomatic TypeScript syntax for assigning private properties.

@AshleyGrant, i sent a pull request to the branch in Your repo, that is used for this pull request. My pull request removes couple of lines, that became redundant after Your changes in this pull request.

I've merged @atsu85's changes and the squashed them to fix the commit message format.


JSONDecodeError: Address error thrown when empty input is provided

Currently, if a user clicks Enter with no input provided, the following error is thrown:

Fixed by #6!


Set Matrix Zeroes in C++

Describe the solution you'd like
Given a 2D matrix. If an element in the matrix is zero and put all the elements in that row and column to zeroes.

Describe the problem and solution (at each steps)
write the complexity

Please assign this Issue to me

Please assign this Issue to me

Go for it!


Update YandexGamesSDK

Description
Fixed the Show the rewarded video bug
How to use the extension
No response
Checklist

[X] I've followed all of the best practices.
[X] I confirm that this extension can be integrated to this GitHub repository, distributed and MIT licensed.

Example

Extension file

@fedoric Hello you have to put the file by zipping it and drag&drop it here not copy-paste the raw content ;)

Thank you @fedoric!
I see you added some console.log().
What are the other change?


Support Froala Editor (wysiwyg-rails) 3.x too

Only loosening the lock works for everything we are using (which is FroalaEditorSDK::S3). Not sure if the rest of this gem also works with Froala 3, maybe somebody could verify that before merge.
If I need to update the (Tiny) version in version.rb please let me know.

I would also like to see this merged in.  I'm currently upgrading a Rails app from 5.2 to 6.0 but I'm unable to upgrade and use the Froala editor.

froala-editor-sdk ~> 1.3.0 depends on wysiwyg-rails ~> 2.9, which is incompatible with Rails 6.0+ because it has a dependency on < 6.0.
When I upgrade wysiwyg-rails to 3.0.6 to be compatible with Rails 6, it is now incompatible with froala-editor-sdk.

This has become obsolete with the release of Froala / wyswyig-rails 4.x, but I would still be in favour of loosening the locks. This just doesn't seem sensible to me:


remove erroneous overflow bar

Time estimate or Size
tiny
Problem
Empty viewer and trajectories with no plots were showing a scroll bar on the right side panel head.
Remove this overflow-y property. I think overflow styling on the side panels could use a touch up, but this is just buggy and needs a fix.

does this still scroll when there are more plots than fit in the height of the window?

yes, I think it's possible that design should be freshened up, but it still behaves as it should, as does the other panel


Add support to Prettify code

prettify option was added. It works with javascript snippets only, like in carbon.


Use env file for connections as opposed to strings?

Just curious if this is a slightly different version of Sling that is used in the Action?
I tried using it in an action where I copied my env.yml file to ~/.sling/env.yml after fetching the action, that didn't work. Have also tried using the SLING_HOME_DIR variable to no avail. Brew is also failing to install on the linux runner with the latest changes to GitHub actions, so that's not an option either.
I have managed to test that the issue is that my connection URL cannot be parsed when constructed based on special characters in the password, however this would be easier to be able to use the env file vs the string.

Just updating on this:
I got it to work, but I had to manually escape 2 special characters that it appears url.QueryEscape doesn't capture: - and } happened to be in the string.
Swapping for %2D and %7D respectively and I got it up and running, but was definitely a hurdle.

Done. When 1.1.6 is released, it will support env var SLING_ENV_YAML.


SHA512

Use SHA512 instead of MD5

The reason for this is because there are 2 different models that you can use. Extracting both of them at build would increase the size of the container. We never really decided on the best way to handle this.