 Owing to a sanity check on the arguments, this is super exploitable although I don't have an exploit for it.
On Ubuntu 16.04.2,
$ python tools/build.py --compile-flag=-m32 --clean --jerry-libc=OFF --system-allocator ON --compile-flag=-ggdb3 --debug --link-lib mcheck
$ cat x.js
Function.prototype.bind({0:0},30000000000);
$ cat mcheck.gdb
break main
commands
call mcheck(0)
c
end
run
$ MALLOC_CHECK_=1 gdb -q -x mcheck.gdb --args ./build/bin/jerry x.js
Reading symbols from ./build/bin/jerry...done.
Breakpoint 1 at 0x80ac9a8: file /afl/jerryscript/jerry-main/main-unix.c, line 410.
Breakpoint 1, main (argc=0x2, argv=0xffffd654) at /afl/jerryscript/jerry-main/main-unix.c:410
410	{
$1 = 0x0
Program received signal SIGSEGV, Segmentation fault.
0x080a8d7f in ecma_gc_set_object_visited.lto_priv.626 (object_p=0x93939390, is_visited=0x1) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:115
115	    object_p->type_flags_refs = (uint16_t) (object_p->type_flags_refs & ~ECMA_OBJECT_FLAG_GC_VISITED);
(gdb) where
#0  0x080a8d7f in ecma_gc_set_object_visited.lto_priv.626 (object_p=0x93939390, is_visited=0x1) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:115
#1  0x080a2731 in ecma_gc_mark (object_p=0x837c150) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:348
#2  0x080a3054 in ecma_gc_run (severity=JMEM_FREE_UNUSED_MEMORY_SEVERITY_LOW) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:732
#3  0x080a3220 in ecma_free_unused_memory (severity=JMEM_FREE_UNUSED_MEMORY_SEVERITY_LOW) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:828
#4  0x0808be2e in jmem_run_free_unused_memory_callbacks (severity=JMEM_FREE_UNUSED_MEMORY_SEVERITY_LOW) at /afl/jerryscript/jerry-core/jmem/jmem-allocator.c:148
#5  0x0808c0b2 in jmem_heap_gc_and_alloc_block (size=0x8, ret_null_on_error=0x0) at /afl/jerryscript/jerry-core/jmem/jmem-heap.c:359
#6  0x0808c175 in jmem_heap_alloc_block (size=0x8) at /afl/jerryscript/jerry-core/jmem/jmem-heap.c:408
#7  0x0808bec9 in jmem_pools_alloc (size=0x8) at /afl/jerryscript/jerry-core/jmem/jmem-poolman.c:102
#8  0x0809bfb6 in ecma_alloc_number () at /afl/jerryscript/jerry-core/ecma/base/ecma-alloc.c:83
#9  0x0809b2fd in ecma_create_float_number (ecma_number=300000000) at /afl/jerryscript/jerry-core/ecma/base/ecma-helpers-value.c:384
#10 0x0809b961 in ecma_copy_value (value=0x837c0f1) at /afl/jerryscript/jerry-core/ecma/base/ecma-helpers-value.c:639
#11 0x0809ba79 in ecma_copy_value_if_not_object (value=0x837c0f1) at /afl/jerryscript/jerry-core/ecma/base/ecma-helpers-value.c:683
#12 0x08074bd2 in ecma_builtin_function_prototype_object_bind (this_arg=0x837bb93, arguments_list_p=0xffffd38c, arguments_number=0x2)
at /afl/jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c:273
#13 0x08074513 in ecma_builtin_function_prototype_dispatch_routine (builtin_routine_id=0x25, this_arg_value=0x837bb93, arguments_list=0xffffd38c, arguments_number=0x2)
at /afl/jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.inc.h:43
#14 0x080996c3 in ecma_builtin_dispatch_routine (builtin_object_id=ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE, builtin_routine_id=0x25, this_arg_value=0x837bb93, arguments_list=0xffffd38c,
arguments_number=0x2) at /afl/jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.inc.h:108
#15 0x08099a87 in ecma_builtin_dispatch_call (obj_p=0x837beb0, this_arg_value=0x837bb93, arguments_list_p=0xffffd38c, arguments_list_len=0x2)
at /afl/jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.c:844
#16 0x08091f9e in ecma_op_function_call (func_obj_p=0x837beb0, this_arg_value=0x837bb93, arguments_list_p=0xffffd38c, arguments_list_len=0x2)
at /afl/jerryscript/jerry-core/ecma/operations/ecma-function-object.c:458
#17 0x08085ce4 in opfunc_call.lto_priv.408 (frame_ctx_p=0xffffd3b4) at /afl/jerryscript/jerry-core/vm/vm.c:411
#18 0x0807db36 in vm_execute (frame_ctx_p=0xffffd3b4, arg_p=0x0, arg_list_len=0x0) at /afl/jerryscript/jerry-core/vm/vm.c:2746
#19 0x0807dcfe in vm_run (bytecode_header_p=0x837bfe8, this_binding_value=0x837bafb, lex_env_p=0x837bb30, is_eval_code=0x0, arg_list_p=0x0, arg_list_len=0x0)
at /afl/jerryscript/jerry-core/vm/vm.c:2826
#20 0x08085939 in vm_run_global (bytecode_p=0x837bfe8) at /afl/jerryscript/jerry-core/vm/vm.c:231
#21 0x080ae327 in jerry_run (func_val=0x837be0b) at /afl/jerryscript/jerry-core/api/jerry.c:425
#22 0x080ad1ce in main (argc=0x2, argv=0xffffd654) at /afl/jerryscript/jerry-main/main-unix.c:691
(gdb)
The garbage collector is expecting a bound function to have an argument list, and it doesn't. Might have been an errant copy-paste between the compilation vs. the garbage collector.
More details from a similar debugging session:
Program received signal SIGSEGV, Segmentation fault.
0x080a8d7b in ecma_gc_set_object_visited.lto_priv.626 (object_p=0x93939390, is_visited=true) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:111
111	    object_p->type_flags_refs = (uint16_t) (object_p->type_flags_refs | ECMA_OBJECT_FLAG_GC_VISITED);
(gdb) where
#0  0x080a8d7b in ecma_gc_set_object_visited.lto_priv.626 (object_p=0x93939390, is_visited=true) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:111
#1  0x080a2740 in ecma_gc_mark (object_p=0x82d7cf8) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:348
#2  0x080a3063 in ecma_gc_run (severity=JMEM_FREE_UNUSED_MEMORY_SEVERITY_LOW) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:732
#3  0x080a322f in ecma_free_unused_memory (severity=JMEM_FREE_UNUSED_MEMORY_SEVERITY_LOW) at /afl/jerryscript/jerry-core/ecma/base/ecma-gc.c:828
#4  0x0808be3d in jmem_run_free_unused_memory_callbacks (severity=JMEM_FREE_UNUSED_MEMORY_SEVERITY_LOW) at /afl/jerryscript/jerry-core/jmem/jmem-allocator.c:148
#5  0x0808c0c1 in jmem_heap_gc_and_alloc_block (size=8, ret_null_on_error=false) at /afl/jerryscript/jerry-core/jmem/jmem-heap.c:359
#6  0x0808c184 in jmem_heap_alloc_block (size=8) at /afl/jerryscript/jerry-core/jmem/jmem-heap.c:408
#7  0x0808bed8 in jmem_pools_alloc (size=8) at /afl/jerryscript/jerry-core/jmem/jmem-poolman.c:102
#8  0x0809bfc5 in ecma_alloc_number () at /afl/jerryscript/jerry-core/ecma/base/ecma-alloc.c:83
#9  0x0809b30c in ecma_create_float_number (ecma_number=0.10000000000000001) at /afl/jerryscript/jerry-core/ecma/base/ecma-helpers-value.c:384
#10 0x0809b970 in ecma_copy_value (value=137201113) at /afl/jerryscript/jerry-core/ecma/base/ecma-helpers-value.c:639
#11 0x0809ba88 in ecma_copy_value_if_not_object (value=137201113) at /afl/jerryscript/jerry-core/ecma/base/ecma-helpers-value.c:683
#12 0x08074baa in ecma_builtin_function_prototype_object_bind (this_arg=137186523, arguments_list_p=0xffffd00c, arguments_number=158)
at /afl/jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c:265
#13 0x08074522 in ecma_builtin_function_prototype_dispatch_routine (builtin_routine_id=37, this_arg_value=137186523, arguments_list=0xffffd00c, arguments_number=158)
at /afl/jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.inc.h:43
#14 0x080996d2 in ecma_builtin_dispatch_routine (builtin_object_id=ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE, builtin_routine_id=37, this_arg_value=137186523, arguments_list=0xffffd00c,
arguments_number=158) at /afl/jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.inc.h:108
#15 0x08099a96 in ecma_builtin_dispatch_call (obj_p=0x82d5730, this_arg_value=137186523, arguments_list_p=0xffffd00c, arguments_list_len=158)
at /afl/jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.c:844
#16 0x08091fad in ecma_op_function_call (func_obj_p=0x82d5730, this_arg_value=137186523, arguments_list_p=0xffffd00c, arguments_list_len=158)
at /afl/jerryscript/jerry-core/ecma/operations/ecma-function-object.c:458
#17 0x08085cf3 in opfunc_call.lto_priv.408 (frame_ctx_p=0xffffd3c4) at /afl/jerryscript/jerry-core/vm/vm.c:411
#18 0x0807db45 in vm_execute (frame_ctx_p=0xffffd3c4, arg_p=0x0, arg_list_len=0) at /afl/jerryscript/jerry-core/vm/vm.c:2746
#19 0x0807dd0d in vm_run (bytecode_header_p=0x82d6278, this_binding_value=137183339, lex_env_p=0x82d40a0, is_eval_code=false, arg_list_p=0x0, arg_list_len=0)
at /afl/jerryscript/jerry-core/vm/vm.c:2826
#20 0x08085948 in vm_run_global (bytecode_p=0x82d6278) at /afl/jerryscript/jerry-core/vm/vm.c:231
#21 0x080ae336 in jerry_run (func_val=137188227) at /afl/jerryscript/jerry-core/api/jerry.c:425
#22 0x080ad1dd in main (argc=2, argv=0xffffd634) at /afl/jerryscript/jerry-main/main-unix.c:691
ecma_gc_mark (object_p=0x82d7cf8). Well this is easier:
(gdb) print args_p[i]
$7 = 0x93939393
(gdb) print *(ecma_extended_object_t *)(0x82d7cf8)
$10 = {object = {type_flags_refs = 0x75, gc_next_cp = 0x0, property_list_or_bound_object_cp = 0x0, prototype_or_outer_reference_cp = 0x82d4100}, u = {built_in = {id = 0xd8,
length_and_bitset_size = 0x4c, routine_id = 0x82d, instantiated_bitset = {0x9e}}, class_prop = {class_id = 0x4cd8, u = {value = 0x9e, length = 0x9e}}, function = {scope_cp = 0x82d4cd8,
bytecode_cp = 0x9e}, array = {length = 0x82d4cd8, length_prop = 0x9e}, pseudo_array = {type = 0xd8, extra_info = 0x4c, u1 = {length = 0x82d, class_id = 0x82d}, u2 = {lex_env_cp = 0x9e,
arraybuffer = 0x9e}}, bound_function = {target_function = 0x82d4cd8, args_length = 0x9e}, external_handler_cb = 0x82d4cd8}}
So the 0x9e arguments list has come right out of the bytecode:
Breakpoint 7, opfunc_call.lto_priv.408 (frame_ctx_p=0xffffd3c4) at /afl/jerryscript/jerry-core/vm/vm.c:366
366	  uint8_t opcode = frame_ctx_p->byte_code_p[0];
(gdb) print opcode
$27 = 0x0
(gdb) step
369	  if (opcode >= CBC_CALL0)
(gdb) print opcode
$28 = 0xb2
(gdb) step
375	    arguments_list_len = frame_ctx_p->byte_code_p[1];
(gdb) print frame_ctx_p
$29 = (vm_frame_ctx_t ) 0xffffd3c4
(gdb) print frame_ctx_p
$30 = {
bytecode_header_p = 0x82d6278,
byte_code_p = 0x82d678e "\262\236(\025\004\062b\022\020\t\r\t'\f\tC)\023\024\062b2\b)\f\t2b(\033\062",
byte_code_start_p = 0x82d6394 "\001\002\003(\005\274\274\274", <incomplete sequence \314>,
registers_p = 0xffffd000,
stack_top_p = 0xffffd284,
literal_start_p = 0x82d6284,
lex_env_p = 0x82d40a0,
prev_context_p = 0x0,
this_binding = 0x82d406b,
call_block_result = 0x38,
context_depth = 0x0,
is_eval_code = 0x0,
call_operation = 0x1
}
(gdb) print frame_ctx_p->byte_code_p[1];
Invalid character ';' in expression.
(gdb) print frame_ctx_p->byte_code_p[1]
$31 = 0x9e
(gdb)
So now let's watch that... watch ((vm_frame_ctx_t *) 0xffffd3c4)->byte_code_p[1]
Finally some progress:
Hardware watchpoint 4: *0x82d6519
Old value = 0x93939393
New value = 0x9393939e
parser_post_processing (context_p=0xffffd2b8) at /afl/jerryscript/jerry-core/parser/js/js-parser.c:1784
1784	      real_offset++;
(gdb)
The value for the arguments length is passed in via the bytecode - it's an opcode (the next one!) and it's stored in js-parser.c, on line 1711:
1710    /* Storing the opcode */
1711    *dst_p++ = opcode;
(gdb) print opcode
$32 = CBC_CALL_PROP_PUSH_RESULT
Okay, so it's something intrinsic with how the types match up between the compiler and the garbage collector.
Other triggers for the same bug:
Function.prototype.bind({0:0},300000000000000000000000,{0:function(){(0)}});
and
l=eval.bind(.1,function(){},800-9900,function(){},909,910,function(){},900,9000,990,908==901)
and
try{String(Number.MAX_VALUE)}catch(r){}assert("a"=="".replace(/$/,"a")),assert("a"=="".replace(/^/,"a"));var eval=eval.bind(.1,0==function(){})
and
y=assert(isNaN(RegExp("")));eval.bind(.1,0,function Error(){},8==9.18,99.100-998399.100,97100,9998,99.100,998,99.100-9980,989,6998,9100,9998,99.100,99,999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.18,99.100,99,999,6998,9100,9998,99.100,99,999,9998.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.100-100,99839999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,eval.bind(.1,0,function Error(){},8==9.18,99.100-998399.100,9998,99.100,function x(){},99.100,989,6998,9100,9998,99.100,99,999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.18,99.100,99,999,6998,9100,9998,99.100,99,999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.100-100,99839999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.18,99.100,99,999,6998,9100,9998,99.100,99,999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.100-100,998399-100,9998,99.100,99,999,6998,99.100,898,99.+00,999.100,999.100,98==9100,9998,93.100,99,994,9998,99.100,9988,99.10000,9998998,99.100,9988,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.1098399-100,998399-100,9998100,999.100,998,99.100-100,99839999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,998399-100,9998,99.100,99,999,6998,99.100,998,99.1100,98.100,99,9998,99.100,9),99.18,99.100,99,999,6998,9100,9998,99.100,99,999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.100-100,998399-100,9998,99.100,99,999,6998,99.100,898,99.+00,999.100,999.100,98==9100,9998,99.100,99,994,9998,99.100,9988,99.10000,9998998,99.100,9988,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.1098399-100,998399-100,9998100,999.100,999.100,function x(){},999.100,99910,99,9998,99.10098,99.100,999.1,999.1998399-100,998399-100,9998,99.100,99,999,6998,99.100,998,99.1100,98.100,99,9998,99.100,9),9998,99.100,function x(){},999.100,999100,99,9999.100,9998,9999.100,9998,99.100,function x(){},999.100,99910,99,9998,99.100,999.100,9998,99.100,998399-100,998399-100,9998,99.1009,9998,99.100,999.100,9998,99.18,99.100,99,999,6998,9100,9998,99.100,99,999,9998.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.100-100,99839999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,eval.bind(.1,0,function Error(){},8==9.18,99.100-998399.100,9998,99.100,function x(){},99.100,989,6998,9100,9998,99.100,99,999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.18,99.100,99,999,6998,9100,9998,99.100,99,999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.100-100,99839999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.18,99.100,99,999,6998,9100,9998,99.100,99,999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.100-100,998399-100,9998,99.100,99,999,6998,99.100,898,99.+00,999.100,999.100,98==9100,9998,93.100,99,994,9998,99.100,9988,99.10000,9998998,99.100,9988,99.10000,9998,99.100,function x(){},999.100,999100,99,9998,99.100,999.100,9998,99.1098399-100,998399-100,9998100,999.100,998,99.100-100,99839999,9998,99.100,998,99.10000,9998,99.100,function x(){},999.100,998399-100,9998,99.100,99,999,6998,99.100,998,99.1100,98.100,99,9998,99.100,9),99.18,99(999,6998,99.100,998,99.100,999.99,9998,99.100,function x(){},999.100,999100,99,9,9998,99.100,99,994,1)

@corporateshill thanks for reporting. I see you found several bugs. May I ask how did you find them? Did you use fuzz testing?


[Existing API Name] : Exchange Rate API

Brief Description 🤓
Exchange-rate API is a tool that provides real-time or historical currency exchange rates. It is often use to integrate currency conversion features into websites, apps, or financial systems. This API typically offer endpoints to retrieve exchange rates for specific currency pairs and currency conversion.
Provide reference!
www.exchangerate-api.com
Select the open source program you are contributing to
Other
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINES of this project.

Greetings @anusha7530🎀 ! , We are excited to have you dive into another issue with us!🚀
Your involvement in our project has been invaluable, and we're confident that your skills and insights will help us conquer this challenge😇.  Use command /gssoc24 to self assign the issue.  This issue represents an exciting opportunity for us to improve and enhance our project, and we are thrilled to have you on board.
We request you to follow CONTRIBUTING GUIDELINES.
Looking for your PR soon!
In case of any issues, you can contact us on Discord.❣

/gssoc24

@dishamodi0910 please assign this to me. /gssoc24

Hey @Tanishashrivas, The issue is already assigned and couldn't be assigned to you again.You can work on some other issue or create your own issue.🚀💗


Page cache memory usage regression with gin-gonic after 0.21->0.22 upgrade

Summary
After go-sentry 0.21.0 to 0.22.0 upgrade (verified by downgrading) we found that our small gin-gonic-based service is "leaking" pagecache memory.
Steps To Reproduce
I don't have an easy way to provide a code snippet, let me know if perhaps this is enough to point in the direction of the problem. If not - I will try to come up with more details.
We have:

A small REST API service using gin-gonic 0.8.2, golang 1.20.6, running inside ubuntu 22.04 container
It accepts POST of file uploads (zip files, up to 100s of megabytes each)
The code then looks at c.Request.MultipartForm.File and processes each file (unzips to see what's inside)
Contents of the file is then uploaded to object storage and then deleted

After go-sentry 0.22 upgrade (verified by reverting the upgrade back to 0.21 with no other changes) we noticed that the metric for "page cache" (container_memory_cache in Kubernetes) keeps going up (into several gigabytes), as POST requests are processed. Before the upgrade, the usage would spike for a moment for each request and then immediately go back to almost nothing.
Our theory is that one of the new gin features added in 0.22 are somehow intercepting request lifecycle in some way that is changing what happens with the temporary file(s) gin creates to handle the large POST body.
Expected Behavior
Before the upgrade, size of page cache did not increase.
 Version: 23.3.1
Anything particular to your environment that could be related to this issue?

Additional context

This is likely caused by https://github.com/getsentry/sentry-go/blob/master/gin/sentrygin.go#L73, which was added in #644. We'll take a look!

@zetaab Did you notice similar issues, assuming you're using gin performance tracing in one of your apps now?

Our apps are internal small applications, I have not noticed any issues lile this

I am thinking that in case of file uploads it will try to read body and it should be closed after read. Otherwise it will reserve the memory and the behaviour is like described in first post. Now someone just needs to find the correct place to add close

I've managed to replicate this behaviour in 0.22 by creating a small example which uploads a file. Indeed the multipart temporary files are not cleaned up. When I try the same example with 0.21 the temporary files are cleaned up.
After a bunch of digging I've realised that this is not an issue caused by the Sentry SDK. It's really an issue in the way net/http deals with modifying a request.
I can also replicate the issue like this:
package main

import (
	"fmt"
	"net/http"
	"os"
)

func main() {

	fmt.Println("OS temp dir path:", os.TempDir())

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		r.ParseMultipartForm(0)

		file, handler, err := r.FormFile("file")
		if err != nil {
			fmt.Println(err)
			return
		}
		defer file.Close()
	})

	http.ListenAndServe("<IP_ADDRESS>:3000", testMiddleware(http.DefaultServeMux))

}

func testMiddleware(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		ctx := r.Context()
		r = r.WithContext(ctx)
		next.ServeHTTP(w, r)
	})
}

The primary culprit here is this line r = r.WithContext(ctx)
This creates a shallow copy of the request that's passed on to the next handler (since the docs say not to modify the original request). If a handler further up then parses a multipart form the result ends up on the modified shallow request, not the original request. Cleanup of temp files happens when the request finishes, but this only applies to the original request. If there's no multipart result, then  no cleanup happens.
So sadly the solution here is always to make sure you clean up yourself by calling the RemoveAll method on the form.
In the above example we'd defer:
r.MultipartForm.RemoveAll()

For reference see:

https://github.com/golang/go/issues/20253
and the the last comment here:
https://go-review.googlesource.com/c/go/+/113055#message-4f00c0d738faf1bf35d398a487f568fa513a9dbd

@cleptric I think we can close this issue, there isn't much we can do from our side.

@cleptric I think we can close this issue, there isn't much we can do from our side.

I don't think this is true. The bug report is about page cache -- not the temp files. We already call RemoveAll to clean up multipart forms. That's normal, and documented in the API. To us it appears that some object captured by gin-gonic is leaking references or file handles or something. Were you able to reproduce that?

@chawco thanks for the response. :)
I will try reproduce more and see if I can see any file handle or reference leaks.

@chawco @vitaliyf
I've been trying to check for any leaks using strace on Ubuntu. So far I can't seem to see any indication that files are being leaked.
Here's the strace output when uploading a file for v0.21:
30860 16:20:31 openat(AT_FDCWD, "/tmp/multipart-1368728943", O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC, 0600) = 9
30860 16:20:32 close(9)                 = 0
30860 16:20:32 openat(AT_FDCWD, "/tmp/multipart-1368728943", O_RDONLY|O_CLOEXEC) = 9
30860 16:20:32 close(9)                 = 0
30860 16:20:32 openat(AT_FDCWD, "/tmp/multipart-1368728943", O_RDONLY|O_CLOEXEC) = 9
30860 16:20:32 openat(AT_FDCWD, "e5535221-c915-4ee7-80de-013d6f6ea463.zip", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 10
30860 16:20:32 close(10)                = 0
30860 16:20:32 close(9)                 = 0
30830 16:20:32 close(7)                 = 0

And here's v0.22:
31347 16:22:22 openat(AT_FDCWD, "/tmp/multipart-3182529862", O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC, 0600) = 9
31347 16:22:22 close(9)                 = 0
31347 16:22:22 openat(AT_FDCWD, "/tmp/multipart-3182529862", O_RDONLY|O_CLOEXEC) = 9
31347 16:22:22 close(9)                 = 0
31347 16:22:22 openat(AT_FDCWD, "/tmp/multipart-3182529862", O_RDONLY|O_CLOEXEC) = 9
31347 16:22:22 openat(AT_FDCWD, "8808efbf-e72a-4091-a723-6142c1fe2677.zip", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 10
31347 16:22:22 close(10)                = 0
31347 16:22:22 close(9)                 = 0
31327 16:22:22 close(7)                 = 0

It doesn't seem like anything has changed, and all the opens seem to have matching closes.
container_memory_cache includes active files, inactive files, and tmpfs.
From the Docker runtime docs:

The amount of memory used by the processes of this control group that can be associated precisely with a block on a block device. When you read from and write to files on disk, this amount increases. This is the case if you use "conventional" I/O (open, read, write syscalls) as well as mapped files (with mmap). It also accounts for the memory used by tmpfs mounts, though the reasons are unclear.

And

The exact formula is cache = active_file + inactive_file + tmpfs.

So temporary files created by multipart parsing can certainly push that metric up if you're using tmpfs. (and if they weren't cleaned up it would remain high)
Was your container OOMing from this? What was happening with container_memory_working_set_bytes during that time?

I think we've found a place where the multipart form parsing was being done, but wasn't obvious, because it was being done by net/http via FormFile, so you're still expected to call RemoveAll afterward. So I think the mystery is solved here -- once we added the cleanup in that last spot the memory usage remained low even with more recent Sentry releases.
It may be good to mention in the docs, however, as if someone wasn't cleaning it up previously they were just being left with some temp files on disk, and not leaking the memory. It would be pretty unexpected for a minor Sentry version bump to cause a memory leak due to a pretty benign pre-existing bug.

@chawco good point, we'll definitely make a note of this gotcha in the docs.

We updated the docs in https://github.com/getsentry/sentry-docs/pull/8376
https://docs.sentry.io/platforms/go/troubleshooting/#avoiding-temporary-file-leaks-in-file-upload-handlers


Minor consistency fixes

Codecov Report

Merging #1392 (c1ae067) into master (f9ac0e2) will decrease coverage by 0.09%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master    #1392      +/-   ##
==========================================
- Coverage   99.12%   99.03%   -0.10%
==========================================
  Files          83       83
  Lines        6401     6402       +1
  Branches     1132     1105      -27
==========================================
- Hits         6345     6340       -5
- Misses         28       31       +3
- Partials       28       31       +3

Flag
Coverage Δ

unittests
99.03% <100.00%> (-0.07%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

src/schemathesis/runner/impl/core.py
97.80% <100.00%> (ø)

src/schemathesis/service/client.py
100.00% <100.00%> (ø)

src/schemathesis/specs/openapi/validation.py
76.47% <0.00%> (-11.77%)
:arrow_down:

src/schemathesis/extra/pytest_plugin.py
98.24% <0.00%> (-1.76%)
:arrow_down:

src/schemathesis/cli/callbacks.py
98.33% <0.00%> (-1.67%)
:arrow_down:

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 f9ac0e2...c1ae067. Read the comment docs.


Change to install-istio.sh to use commonly

This patch updates install-istio.sh to support to adjust version and manifest path (URL/file path).
e.g.
$ ISTIO_VERSION=1.5.7
$ ./third_party/install-istio.sh third_party/istio-stable/istio-ci-no-mesh.yaml

$ ISTIO_VERSION=1.6.5
$ ./third_party/install-istio.sh https://raw.githubusercontent.com/knative-sandbox/net-istio/master/third_party/istio-latest/istio-ci-no-mesh.yaml

$ ISTIO_VERSION=stable
$ ./third_party/install-istio.sh https://raw.githubusercontent.com/knative-sandbox/net-istio/master/third_party/istio-stable/istio-ci-no-mesh.yaml

The goal is to use install-istio.sh from serving repo. It will be able to share istio manifest between net-istio and serving as reported in https://github.com/knative/serving/issues/8896.

/hold
Ugh... This PR might disturb @JRBANCEL 's https://github.com/knative/serving/pull/8945 as I changed third_party/istio-${ISTIO_VERSION}/install-istio.sh to third_party/install-istio.sh.
@JRBANCEL what do you think about this change? You don't need it?

Using the path or an env variable is pretty similar. The path is slightly more explicit.
Up to you but I would just not make the change since my PR moving to channels will get rid of versions altogether.

Thank you, I understand.
Then, let's not merge it for now :smile:


Not working with Epic games

Describe the issue
it just crashes when i open the epic games ipa
Instructions to reproduce
i do NOT know
What version of LiveContainer are you using?
2.1.2
Other
i dont

If you mean its games then it will not work because they require an entitlement that is not available with free developer account.
If you mean the store itself then it will also not work because it has sideload detection and I can't see a point of just installing the store itself.


exclude projects / recipients that have already been reported from new treasury reports

we still need to get clarity on this.
both a feature request and possibly a bug (because possibly, reports that include previously-reported projects/recipients would be rejected by treasury at the bulk upload stage)

depends on #261 -- we'd use the same table

I think the title is incorrect. We always need to report the projects which will evolve from period to period.

Subrecipients already function correctly


The pkg-config file version is stale

It still says 0.4.3, that should be fixed in the next release.

This was fixed in 0.4.5.


Add test for "forward:..."

There is a test for a controller that uses "redirect:..." views but none for "forward:..." (and it seems to be non-obvious how to get the mock request dispatcher to dispatch back to the main servlet).

Something like this?
		this.mockMvc.perform(get("/"))
			.andExpect(status().isOk())
			.andExpect(forwardedUrl("/WEB-INF/layouts/standardLayout.jsp"));

That would be good. I also want to test the actual output from the forwarded resource (it's an API and the rest-docs should contain the proper response). Is there a way to do that? I think you showed me how to do once but I must have lost the knack.

At the moment we only have an explicit option for async dispatches. Should probably add one for FORWARD and ERROR dispatches. Take a look at how MockMvcRequestBuilders#asyncDispatch is done.

Something like this?
	public static RequestBuilder forward(MvcResult result) {
		return new RequestBuilder() {

			@Override
			public MockHttpServletRequest buildRequest(
					ServletContext servletContext) {
				MockHttpServletRequest request = result.getRequest();
				request.setRequestURI(result.getResponse().getForwardedUrl());
				return request;

			}

		};
	}

and then
	@Test
	public void getLocations() throws Exception {
		final MvcResult result = this.mockMvc
				.perform(MockMvcRequestBuilders.get("/")).andReturn();
		this.mockMvc.perform(forward(result))
		    .andExpect(...);
	}

Also, although the test passes, it doesn't work with restdocs (no snippets created). Cc @wilkinsona.

Yes, we probably could do some such option. It wouldn't work well with JSP but apart from that yes.

MockMvc is supposed to be immutable, so that API wouldn't really work.
Perhaps .andPerformForward() returning a new ResultActions, if that's possible.
mockMvc.perform(get("/one"))
        .andExpect(status().isOk())
        .andExpect(forwardedUrl("/two"))
        .andPerformForward()
        .andExpect(content().string(...))

Or on the original builder somehow
mockMvc.perform(get("/one").with(followForwards()))

I see a ForwardRequestPostProcessor but that needs to know the forwarded URL on construction.


Watch task outputs to avoid cache restorations

Start a daemon, notify it of output globs when a task completes, watch those outputs, check if we can skip cache restores on subsequent runs.
Uses grpc and protobuf for communication.
Before shipping:

[ ] Wire up --no-daemon flag to run
[ ] Add command for daemon status
[ ] Add command for daemon stop
[ ] Add command for daemon start
[ ] Add command for daemon restart
[ ] Proper daemon logfile management
[x] Ensure that the client tries to start the server after maybe killing a previous incarnation
[x] Investigate golang internal lockfile
[ ] Verify ordering guarantees on file-watching
[ ] Sort out proper syntax for protos in Makefile

On the topic of ensuring that we aren't racing with the filesystem event notifications, watchman uses cookies. We briefly discussed this idea as "writing to a well known file after an operation completes, then waiting for that event". They also have some caveats re: FSEvents on macOS. We are not currently using FSEvents, as that requires CGO. https://facebook.github.io/watchman/docs/cookies.html
More investigation is still required here.

After the first pass review, and looking over the use of the unix domain socket and pid files, I'm going to make some changes to how we implement the checks for the server being alive. I think the best path forward is to synchronize on the pid file. Whoever owns the pid file is allowed to do whatever they want with the socket file. The server will attempt to lock the pid file, and on success delete any existing socket file and create their own.
The client will try to find a live process matching the pid file. If the pid file does not exist, try starting a server. If it exists but the server is not responding, try killing it. If the pid file exists but has no matching process, delete it and try starting a server, or report an error to have the user delete the pid file. At no point will the client manipulate the socket file.
It is possible for two clients to race trying to delete a pid file and start a new server, so it may be better to just report an error, or allow for this behavior to be controlled via flag (--force-daemon or something).

Investigated golang internal lockfile. I think it's overkill for what we need, especially given that we'd have to do some work to use it, but if someone publishes a nice library around it, we could potentially drop it in.

@nathanhammond I'm removing the WIP label as I think this is ready for review to merge to main for a "dark launch". Daemon usage is behind a hidden, opt-in flag.

@nathanhammond I decided to go back and remove context instances from a few structs, and I think it's resulted in a little bit of a better design, particularly on client side and in run.go.

Whew, ok, I've managed to get CI to pass w/o the checked-in generated code from protobufs. Our Makefile is not really cross-platform, which makes it a challenge to do. We ought to address that.
@nathanhammond I think it's back over to you at this point.

@nathanhammond I think I've addressed everything, but rather than extract pidLock, I nuked it and [hopefully] simplified the code there after reading a bit more about signaling, as well as running some experiments. I'll let you hit the button if you're still on board, otherwise we can go over it.
Quick summary is that the defer from runTurboServer should always run, as long as we don't get SIGKILL, which we don't catch anyways.


MAINT: Include ngboost tests for python 3.12

Following the recent ngboost release v0.5.0 which adds support for python 3.12, we can re-add that dependency to our test suite :
https://github.com/stanfordmlgroup/ngboost/pull/346

@connortann This is off topic but could you somehow give me access to the projects board? That way it's easier for me to track the bugs I want to take on.

I wasn't aware that you didn't have access to the projects board, apologies. To me it looks like they are publicly visible even to unauthenticated users. What do you see on this URL?
https://github.com/shap/shap/projects?type=classic

Since the "community fork merge" & the joining on new maintainers last year, we haven't been using project boards particularly strictly. I've started assigning some bugs to "bug triage", as that seems like a useful one. I have however tried to use GH milestones to label which PRs and issues I'd like to sort for each release.
Open to any suggestions if there's something that you prefer! Feel free to edit project boards as you see fit if there is another way of managing things that you think would work better

PPS - seeing as we've appropriated this PR to have a chat, just to say I am delighted that you've joined as a maintainer. Your PRs and reviews are very helpful, and I do hope you stick around in the shap org for the long run.

Yes, I see the boards but cannot modify them.

Since the "community fork merge" & the joining on new maintainers last year, we haven't been using project boards particularly strictly. I've started assigning some bugs to "bug triage", as that seems like a useful one. I have however tried to use GH milestones to label which PRs and issues I'd like to sort for each release.
Open to any suggestions if there's something that you prefer! Feel free to edit project boards as you see fit if there is another way of managing things that you think would work better

Sure I understand that and I think that makes total sense. But I regularly see things popping up again which I already made a mental note on. I would like to have project where I can add these things and then just sort them based on my current preference, even though many of these might not make it into the next release.
E.g. I currently would like to take a look into some visualization stuff, the segmentation fault and the tensorflow LSTM issue.

PPS - seeing as we've appropriated this PR to have a chat, just to say I am delighted that you've joined as a maintainer. Your PRs and reviews are very helpful, and I do hope you stick around in the shap org for the long run.

Though my contribution frequency declined a bit this project is fully on my radar and it's always a delight to work with you and the community on it

Yes, I see the boards but cannot modify them.

I think we need @slundberg to change your permissions as he is the only one with admin permissions for the org at the moment. I'll shoot him an email.

Yes, I see the boards but cannot modify them.

I think we need @slundberg to change your permissions as he is the only one with admin permissions for the org at the moment. I'll shoot him an email.

If you ping him, could you maybe ask him to also give me the permissions to trigger workflows?


fix: use apply spaceless instead of spaceless

Thanks for this @davidhellmann !
We were actually in the work of updating this, will need some work on the PR, as the composer minimum craft version needs to be updated too. Otherwise it wouldn't work with older twig versions.

Valid! So I'll close this one.


Publish security updates

Currently the latest release is version 1.2.0 which dates back to January 2018. Between then and now some commits were made to this repository, mostly regarding package updates. Some of these updates also resolved active security issues. Unfortunately these changes aren't published. Would it maybe be possible to create a new release from the current master branch? Therefore enabling consumers to update and benefit from these changes.

Will try to get to it this week if someone else doesn't first.

@knownasilya Let me know if I could assist in any way


Conventions

I did what was outlined in the ticket and removed some unnecessary code (the config.methods option and allById method). I also moved jscs to a pretest script to be in line with the main botkit project.
Closes #2

Also according to CONTRIBUTING.md, all commits should start with the verb itself in present tense.


Refactor the example such that it is a react-native project and not an expo one

It's required since Expo doesn't support the newly extracted WebView library.

First, try make #7 work


Update dependencies

also cleans up more bad props from the grid-styled upgrade

Deploy preview for pixelsonly-production processing.
Built with commit bfdff3d31bb325c0218ae3428c22c0847875a265
https://app.netlify.com/sites/pixelsonly-production/deploys/5a9f87440b79b74f91789a18


Failed to load hostfxr.dll

Describe what happened:
When a click to create a shared terminal in the Live-Share Panel (with read/write or read-only) and do dotnet run, i go the message :

Failed to load the dll from [c:\Users\david.pelletier2\AppData\Roaming\Code\User\globalStorage\ms-vsliveshare.vslivesh
are\dotnet-3.1.1\host\fxr\3.1.1\hostfxr.dll], HRESULT: 0x800700C1
The library hostfxr.dll was found, but loading it from c:\Users\david.pelletier2\AppData\Roaming\Code\User\globalStora
ge\ms-vsliveshare.vsliveshare\dotnet-3.1.1\host\fxr\3.1.1\hostfxr.dll failed

I re-installed the extension and got the same result.
but if instead a create manually a internal terminal then shared that terminal, everything works.
What was your system configuration?
Product and Version [VS/VSCode]:
VS Code 1.42.1
OS Version[macOS/Windows]:
Windows
Live Share Extension Version:
1.0.1653
Target Platform or Language [e.g. Node.js]:
.Net Core 3.1
live-share.zip

This may have been fixed with some changes in how Live Share starts the agent process.
Please re-activate if the issue still reproes.


Defect: postgolive : Desktop & Mobile : Multiple videos could be played at the same time

Steps:

Navigate to https://www.partsasist.com/
Go to 'Tutorials and more' section and play 'ADDING VINS – MY FLEET' video

Issues observed:

Video plays correctly however, if the user click away from the video then video window disappears however can hear the video is playing
If user tries to scroll down and clicks on other video then other video too plays along with earlier video, this too is a bad experience
Note: Above issue is observed in both desktop site and mobile viewport site

duplicate of https://github.com/hlxsites/vg-partsasist/issues/76


generate random levels

bible for this is going to be:
http://www.gridsagegames.com/blog/2014/06/mapgen-cellular-automata/
http://www.gridsagegames.com/blog/2016/03/generating-populating-caves/

http://www.roguebasin.com/index.php?title=Roguelike_Dev_FAQ#How_are_dungeons_generated.3F mentions:
"There are many algorithms that will generate a dungeon. What they do is to fill a dungeon with rooms passages, stairs, traps, doors, items, and monsters, often in that order. Which comes first can be an interesting decision."
i'm planning on doing something like:

stairs
rooms
passages
doors (if these end up existing - i liked the doors in teleglitch)
monsters/items
traps (if these end up existing)

http://www.roguebasin.com/index.php?title=Roguelike_Dev_FAQ#How_do_you_make_sure_all_your_rooms_and_passages_are_reachable.3F describes how a flood fill is useful to figure out which rooms are reachable / unreachable

current status: implemented drunkard's walk, built a little tool to help visualize level creation algorithms


[docs] Invalid Discord invite link

Summary
In the docs, the Discord invitation link in the footer of the page is invalid

This is the link: https://discord.com/invite/cB54BwPGru
If you try to access, it says is invalid or expired. This is the line of the file in docs where the link should be replaced:
https://github.com/WalletConnect/walletconnect-docs/blob/6f8c54f0126488854e12615e1b867c3c4bda7acd/docusaurus.config.js#L133
Link to the related docs page
https://docs.walletconnect.com/2.0/web3modal/react/installation

Thank you 🙏


create_window sample code not working

Summary
I copy pasted the exact code from the create_window sample with the latest version 0.52 but I got the error messages while importing.

Crate manifest
[package]
name = "learnwin"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies.windows]
version = "0.52"
features = [
    "Win32_Graphics_Gdi",
    "Win32_System_LibraryLoader",
    "Win32_UI_WindowsAndMessaging",
]

Crate code
use windows::{
    core::*, Win32::Foundation::*, Win32::Graphics::Gdi::ValidateRect,
    Win32::System::LibraryLoader::GetModuleHandleA, Win32::UI::WindowsAndMessaging::*,
};

fn main() -> Result<()> {
    unsafe {
        let instance = GetModuleHandleA(None)?;
        debug_assert!(instance.0 != 0);

        let window_class = s!("window");

        let wc = WNDCLASSA {
            hCursor: LoadCursorW(None, IDC_ARROW)?,
            hInstance: instance.into(),
            lpszClassName: window_class,

            style: CS_HREDRAW | CS_VREDRAW,
            lpfnWndProc: Some(wndproc),
            ..Default::default()
        };

        let atom = RegisterClassA(&wc);
        debug_assert!(atom != 0);

        CreateWindowExA(
            WINDOW_EX_STYLE::default(),
            window_class,
            s!("This is a sample window"),
            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            None,
            None,
            instance,
            None,
        );

        let mut message = MSG::default();

        while GetMessageA(&mut message, None, 0, 0).into() {
            DispatchMessageA(&message);
        }

        Ok(())
    }
}

extern "system" fn wndproc(window: HWND, message: u32, wparam: WPARAM, lparam: LPARAM) -> LRESULT {
    unsafe {
        match message {
            WM_PAINT => {
                println!("WM_PAINT");
                ValidateRect(window, None);
                LRESULT(0)
            }
            WM_DESTROY => {
                println!("WM_DESTROY");
                PostQuitMessage(0);
                LRESULT(0)
            }
            _ => DefWindowProcA(window, message, wparam, lparam),
        }
    }
}

The issue is here:
version = "0.52"

To compile a sample, you'll want to reference the corresponding git repository that matches the sample. See Specifying dependencies from git repositories for instructions on how to do that.

I thought sample was also using 0.52 also, mb.


Minor changes to make logs easier to understand in standlone tests

Lots of stuff doesn't work in standalone, and isn't supposed to.
These are a few changes that I think are safe to make the
tests less noisy, hopefully making it easier to spot and understand
the "real" error and not the "normal" errors that fly by all the time.

This is super helpful - thanks for making this change!


Need to use helm.sh/hook-delete-policy

https://github.com/flant/loghouse/blob/64d0d88d24eaf1b6aa1db9470a5a3ce1f6088cd6/charts/loghouse/templates/loghouse/loghouse-init-tables.yaml#L8

[kube] root@kube ~ # vi loghouse/values.yaml
[kube] root@kube ~ # helm upgrade --namespace loghouse loghouse loghouse/
Error: UPGRADE FAILED: jobs.batch "loghouse-init-tables" already exists
[kube] root@kube ~ # kubectl -n loghouse delete jobs/loghouse-init-tables
job "loghouse-init-tables" deleted
[kube] root@kube ~ # kubectl -n loghouse delete jobs/loghouse-init-tables
job "loghouse-init-tables" deleted
[kube] root@kube ~ # helm upgrade --namespace loghouse loghouse loghouse/
Release "loghouse" has been upgraded. Happy Helming!
LAST DEPLOYED: Fri Dec  8 14:18:30 2017

Annotation was added in #137 and released as v0.3.0. There are more improvements, check it out!


libgit2-sys fails to build with vendored openssl because of misconfigured cc parallelism

libgit2-sys enables the parallel feature of cc by default, however when building libgit2-sys with the vendored-openssl feature, this contaminates the cc run of openssl-sys with parallel flags and produces the following error:
 --- stderr
  make: *** read jobs pipe: Resource temporarily unavailable.  Stop.
  make: *** Waiting for unfinished jobs....
  thread 'main' panicked at /cargo/registry/src/index.crates.io-6f17d22bba15001f/openssl-src-300.2.3+3.2.1/src/lib.rs:611:9:

  Error building OpenSSL:
      Command: cd "/target/aarch64-unknown-linux-gnu/release/build/openssl-sys-6a5ed052a12e98be/out/openssl-build/build/src" && MAKEFLAGS="-j --jobserver-fds=7,8 --jobserver-auth=7,8" "make" "build_libs"
      Exit status: exit status: 2

This is a known issue with building openssl using parallelism:
https://github.com/rust-lang/cargo/issues/13476
https://github.com/sfackler/rust-openssl/issues/2179
https://github.com/rust-lang/cc-rs/issues/964
In other words, cc/parallel is mutually exclusive with openssl-sys/vendored when building yet libgit2-sys potentially enables both.

Enabled in https://github.com/rust-lang/git2-rs/commit/92491dbcc12cdcc73194859e6ea68f293a256bb2

Could you try make 4.4.1 please?
I've verified that it does fix compilation on my project.

It does indeed work with that version.
I'll close this in favor of your cc PR since it seems to fix the underlying issue.

cc 1.0.87 has released which should fix this


[Feature Request]: Handle Application theme Correctly

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
Allows users to switch between Light, Dark, or Custom themes, providing a personalized and visually comfortable interface.
Use Case
Enables manual or system-based theme switching, scheduled changes, and high-contrast modes for accessibility.
Benefits
Improves user experience, reduces eye strain, saves battery, and ensures consistency with system preferences.
Add ScreenShots
No response
Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC Ext'24 contributor
[X] I'm a Hacktoberfest 2024 contributor
[X] I have starred the repository

Hey, can you assign me this issue , I want to give it a try.

@OmDixit2107 make sure all page/screen theme handle correctly and displayed data
Don't change any backend-logic just make changes in UI


Store error messages for lambda functions and store to database, make accessible through API

If there is an error with a lambda call (ex. GitHub app + services), there is no way for the user to tell what the error is. We should store any failure of the lambda in Dockstore. A table should be created with fields such as GitHub user, tag version, repository path, error message, entry. There also must be a user endpoint for grabbing their errors (sorted with most recent first). A user should also be able to dismiss errors.
Consider: These sound a lot like user specific notifications, we should consider implementing a generic notification system for users, and errors from lambda calls would just be one type of message. The current org request system could also be moved to this generic notification system.
┆Issue is synchronized with this Jira Story
┆Issue Type: Story
┆Fix Versions: Dockstore 1.9
┆Sprint: Sprint 36 Krill
┆Issue Number: DOCK-1214

Was able to use https://dev.dockstore.net/api/static/swagger-ui/index.html#/lambdaEvents/getLambdaEventsByOrganization to see past events/errors.
API - 1.9.0-alpha.11-SNAPSHOT
UI - 2.6.0-rc.0-25-g2ee44acb


Standardizing error response on failed login

What's this PR do?
Standardizes the error message response when credentials fail to be like...
{
  "error": {
    "code": 401,
    "message": "Invalid email or password."
  }
}

When a user tries to register with an email or mobile that already exists, the response is...
{
  "error": {
    "code": 401,
    "message": "The mobile has already been taken."
  }
}

Where should the reviewer start?

AuthController.php: The exception thrown when the auth is incorrect now has a status code of 401, and it specifies email or mobile in the error message as opposed to username.
UserController.php:

Simplifies the password check logic so that we're not executing a User::where query multiple times.
Overrides the buildFailedValidationResponse function to deliver a custom error response.

Controller.php: Overrides the buildFailedValidationResponse function from the ValidatesRequests trait

What are the relevant tickets?
Closes #183
cc: @DFurnes - Am I doing this ValidatesRequests trait thing right?

@jonuy Looks good to me!


feat: reexport async_task::FallibleTask

Motivation: FallibleTask is part of the public interface of this crate, in that Task::fallible returns FallibleTask. However, in order to name that type, users need to add a direct dependency on async_task and ensure the crates versions are compatible. Reexporting allows crate users to name the type directly.
Thanks!

Is that true even in case of task panic?

When the task panics the panic is caught and later propagated to the task that is polling the Task handle.


Check whether annotation is orcid and add orcid to author.

Should fix #512
Checks whether an orcid annotation is intersecting with author names , when the annotation is pointing to an ORCID pattern then recover the author name and add ORCID ID

Coverage increased (+0.07%) to 38.041% when pulling a5a3af96ac6e873469dae7b7014eefd4bf912766 on 512_PDF_and_authors_with_ORCID into d2919bc0b7d064d68285b08e8f1d4a2e63085eae on master.

Sorry for the slow review! It works very well when orcid annotations are present, both for correcting names and extracting the orcid and no effect on the normal cases according ot my tests. Thanks a lot Achraf !

ok for some unknown reason, it does not work after merging :/

OK I found the problem, it works again as expected when merged.
I also fixed the case where pdfAnnotation.getDestination() was null/empty - the pdf processing was failing in this case.


Use a different port for the kubectl proxy in the shell and go tests.

Help narrow down the cause of #4807. Alternatively, we could roll back my change from yesterday that adds the proxying but since no one has done that I'm going to work on rolling forward.

@zmerlynn @jlowdermilk

LGTM

Actually, we're going to revert #4791. Reverting this first.

Thanks. Sorry for the break. :/


Fix code scanning alert - Uncontrolled data used in path expression

Tracking issue for:

[x] https://github.com/mags0ft/Lorean/security/code-scanning/1

used werkzeug.utils.secure_filename to "mitigate" the vulnerability.


Error on staging: Reverse for 'institutionidentifier-detail' not found

The staging Django container gives a django.urls.exceptions.NoReverseMatch exception. This seems to be because the BaseModel defines a get_absolute_url function that assumes that all models have a "detail" view. But the InstitutionIdentifier model does not have a detail view.

To be honest, I can't recreate it. I was looking through the logs on the staging site trying to pinpoint the cause of another issue and saw this. There's nowhere that I can find in the code thus far that would try to call the get_absolute_url method on the InstitutionIdentifier model, so...

Do you have a full traceback?

Do you have a full traceback?

Unfortunately, no.

I'm going to put this on hold until we can recreate.


test infrastructure and payment request tests

Test infrastructure setup

RPC mocking
Transaction submit mocking
"Don't ask again" cache config

test: create payment request
https://github.com/user-attachments/assets/a5300a97-1369-430a-840e-d85c9ce45d4a
test: approve payment request ( "don't ask again" enabled )
https://github.com/user-attachments/assets/055d031d-fb0b-4463-8ae4-a2879c09ff7a

@Megha-Dev-19 See the "approve payment request" test video, where "Don't ask again" is enabled, but the loading spinner on the approve button does not stop. Is this missing for real, or does it only occur in the test?

@race-of-sloths include

⏸ This repository is on pause
@petersalomonsen please reach out to the maintainer to unpause this repo with @race-of-sloths unpause command

@Megha-Dev-19 See the "approve payment request" test video, where "Don't ask again" is enabled, but the loading spinner on the approve button does not stop. Is this missing for real, or does it only occur in the test?

Yeah it's specific to local gateway, I have shared the exact details on chat with you

@Megha-Dev-19 See the updated test video for approving payment requests with "don't ask again" enabled. This shows that the table is empty after the transaction is completed, and also that the approved payment request can be found under the history tab. Can you confirm if this is the correct and expected behaviour, and that we can keep the test like this?

@petersalomonsen yes that’s the expected behaviour 👍


{Cloud} Patch some suffixes and missing endpoints from ARM metadata

Description

The suffixes in ARM metadata do not start with . while in CLI hard-coded endpoints, some suffixes start with .. To make ARM metadata compatible with existing CLI code, this PR patches some suffixes from ARM metadata to begin with .
This PR also patches some endpoints that do not exist in ARM metadata yet.
Testing Guide

Get the output of az cloud list
Set metadata url env:
export ARM_CLOUD_METADATA_URL='https://management.azure.com/metadata/endpoints?api-version=2019-05-01'
Run az cloud list and compare the results with the previous output.

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

Cloud

Cloud


Failed to start gauge API with an error notification:There are version incompatibilities between Gauge and it's plugins in this project. Some features will not work as expected.

Describe the bug
I am working on Win 11 and viscode version 1.85.2(user setup). And have installed the latest version of gauge(1.5.6).
But when I start run the spec, I got the following errors:
[Gauge]
Failed to start gauge API: Timed out connecting to <IP_ADDRESS>:53329
Get Support ----------------------------
Docs:          https://docs.gauge.org
Bugs:          https://github.com/getgauge/gauge/issues
Chat:          https://github.com/getgauge/gauge/discussions
Your Environment Information -----------
windows, 1.5.6, 9b96118
csharp (0.10.6), dotnet (0.5.2), html-report (4.2.0), screenshot (0.1.0), xml-report (0.4.0)
Error: Tests failed.
And an error notification on the vs code right bottom:
There are version incompatibilities between Gauge and it's plugins in this project. Some features will not work as expected.
I have restarted the laptop and reinstalled the vs code. But shese did not work.

The result runs in cmd:

gauge update --check
No Updates available.

gauge version
Gauge version: 1.5.6
Commit Hash: 9b96118

Plugins
csharp (0.10.6)
dotnet (0.5.2)
html-report (4.2.0)
screenshot (0.1.0)
xml-report (0.4.0)

Not sure of the detail of your specific project, but make sure you update the version of the Nuget dependency for the gauge-dotnet or gauge-csharp plugin that is defined within your project so it matches the plugin version installed with gauge. Can re-open if still having problems.


ACQ - Updated metadb derived tables

Creates new po_orders derived table and adds the table to the runlist
Updates feesfines_accounts_acounts derived table

@nassibnassar Hi Nassib - I updated the queries with the requested changes. I'm not sure how to update the pull request if needed. Thanks!

@LauSchl Thank you so much for your comments! I hope I've fixed everything you found and have updated my branch. Thank you!

@natalyapik Thank you! I updated the file with those changes.

@sbeltaine I've updated the indentation for the CASE, WHEN, ELSE, END, per our discussion at ACQ-ERM today.

There is so much going on in this PR and I'm having trouble following what was intended.  It looks like feesfines_accounts_actions.sql has been accidentally renamed to feesfines_accounts_action.sql.  Is that correct?

Sorry @nassibnassar. That shouldn't have happened and that was my error. I returned it back to the correct name. I was going to add ".sql" just in case I missed it like I did with the po_notes, and then realized I had already added it so I went to delete it. I guess I backspaced one character too far. I'm sorry for adding more confusion.

po_notes.sql
All queries:

[X] PR Title and Description are accurate and thorough
[X] PR is based on a new branch (not main)
[X]PR scope is not overly broad
[X] Query runs without errors
[X]  Query output is correct
[X] Query logic is clear and well documented
[X] Query is readable and properly indented
[X] Table and column names are in all-lowercase
[X] Quotation marks are used only where necessary
[X] JSON extraction is in standard form, for example:
LDP:     t #>> '{f1,f2,f3}'    [for compatibility across LDP 1 & 2]
Metadb:  jsonb_extract_path_text(t, f1, f2, f3)

Derived tables:

[X] First line is "--metadb:table" directive, followed by blank line
[X] User documentation in comment lines, followed by blank line
[X] File name is listed in runlist.txt after dependencies

I approve the new po_notes.sql derived table.
The feesfines_accounts_actions.sql needs Comments for the actions_created_by table.

@sbeltaine To approve a PR, please go to: Files changed > Review changes > Approve > Submit review

We are getting there.  Thanks for your patience.
Could someone explain why two different tables have been combined into a single pull request?  It would be easier to keep track of the many comments above if the PR had been simpler.

Creates new po_orders derived table and adds the table to the runlist Updates feesfines_accounts_acounts derived table

Should this say po_notes?  In the PR description.

This pull request may have unresolved issues.


misc: update vllm dependency to support attention size 160

What does this PR do?
changed to a version of vllm that supports head size 160.
or @Narsil if you merge this, I can directly change the commit id
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you read the contributor guideline,
Pull Request section?
[ ] Was this discussed/approved via a Github issue or the forum? Please add a link
to it if that's the case.
[ ] Did you make sure to update the documentation with your changes? Here are the
documentation guidelines, and
here are tips on formatting docstrings.
[ ] Did you write any new necessary tests?

Who can review?
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.
@OlivierDehaene OR @Narsil

Hey thanks.
Which model uses 160 ? I'm curious I never saw one.

@Narsil this one https://huggingface.co/iGenius-AI-Team/test-Italia-9B-Instruct-v0.1

I am closing it because it is already covered by https://github.com/huggingface/text-generation-inference/pull/2224


Add more detail on how to write adapters.

Take most of the general discussion from the gmail adapter docs at
https://github.com/juttle/juttle-gmail-adapter/blob/master/docs/adapter_impl_notes.md
and add them to this doc. Specifically, added the following:

How juttle loads an adapter
General discussion of live/historical and how that relates to the data read/written by an adapter.
Notes on configuration.
Options supported by many read commands.
Notes on the filter expression and how its parsed version is made available to the adapter.
Notes on write and expectations for write (don't block event loop) and eof (return a promise that resolves when everything is written).
Logging
Returning errors.

Once this is merged I'll change the gmail adapter docs to take out the
general stuff and tailor it more closely to the specific
choices/options used by the gmail adapter.
@demmer @dmehra @rlgomes

@davidvgalbraith

How does it look if we don't talk about optimization until after we've fully covered regular read? It seems like that'd give easier context for understanding.

I think the current level of detail for optimization is ok--it's just talking about the idea of optimization in the overview and mentioning what the optimize attribute of the object returned from the init function should be. I think if we added more details on optimization, it should definitely come after read.

Maybe i missed it, we talked about including pointers to the wikis,
https://github.com/juttle/juttle/wiki/Adapter-Test-Checklist
https://github.com/juttle/juttle/wiki/Adapter-Publishing-Checklist

@dmehra please look again?

+1


etcdserver: add is_leader prometheus metric that is 1 on the leader.

Before this change, we had now way to find a leader using /metrics endpoint. This commit adds a metric to do that.

cc @wojtek-t @jpbetz @gyuho


How can i use it with jsx ?

Hi, there
i use mithril + jsx in my app and i want use this ! how can i do that ?

I think you have to use a jsx-compiler serverside. Haven't tried this, since I don't use jsx.
If you found a solution for this, feel free to drop it here, so that I can include in the docs.

Hi,
I used mithril.js with jsx.
This example is SPA + SSR with jsx.
https://github.com/alfa-jpn/mithril-spa-ssr-example
Without juice(server side css rendering) version is this commit.
https://github.com/alfa-jpn/mithril-spa-ssr-example/tree/e04ca9572eaf05e25c50e1f07ff37e9995b1331c

@alfa-jpn thank you so much.


Correct usage, small time is first parameter, otherwise the result is…

… negative

Issue: https://github.com/microsoft/spring-cloud-azure/issues/755


Intermittent failure of snippet endpoint

Describe the bug
From Graph Explorer, sometimes the snippets fail to load

To Reproduce
Go to Graph Explorer and try loading the code snippet tab, switch from one tab to another
Expected behavior
The snippet tab on GE should be able to load results
Desktop (please complete the following information):

OS: Windows 11
Browser: Edge

This issue is still happening (unless the fix is not deployed!!)
@adhiambovivian


Use boost.outcome instead of external

My theory is that this will fix linux/gcc issue with operator<<
Details: https://travis-ci.org/soramitsu/kagome/builds/545234772

Codecov Report

Merging #149 into master will increase coverage by 0.06%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master    #149      +/-   ##
=========================================
+ Coverage   73.14%   73.2%   +0.06%
=========================================
  Files         288     286       -2
  Lines        7533    7353     -180
  Branches     3850    3826      -24
=========================================
- Hits         5510    5383     -127
+ Misses       1026     976      -50
+ Partials      997     994       -3

Impacted Files
Coverage Δ

.../mock/libp2p/connection/connection_mock_common.hpp

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 86c1a1a...d3dac64. Read the comment docs.


fixes invalid page reuse for context based pages (1.6 version)

NOTE: This fix has been merged into master already. We considered it too risky for 1.6 for now, but it remains here in case it becomes a more serious problem.
rebase on release-1.6 based on @duckers request
This replaces https://github.com/fusetools/fuselibs-public/pull/946
This PR contains:

[x] Changelog
[ ] ~Documentation~
[x] Tests

Closing since we have branched out release-1.7


'Extract Selected Rows' creates table with exact same table name

Under the 'Select' menu when choosing 'Extract Selected Rows' the new table that is created is given the exact same table name. This causes problems when distinguishing between the different tables. Particularly when using the 'Chemical Space' tool. There is no way to differentiate and the Chemical Space values are always added to the first table, not the extracted table.

Hi @tcarolan , how do I reproduce it? When I do "Extract Selected Rows", a postfix gets added that lets you differentiate between tables. I.e., "smiles" becomes "smiles (2)", then "smiles (3)", etc

Hi Andrew, Please see the attached video. This must be a case when the postfix is not added. The data is loaded from a DB query. Oddly, if I execute the 'Extract Selected Rows' a second time the postfix is added "(2)" but the first two duplicate tables remain.
https://user-images.githubusercontent.com/6126004/228627315-2c4581f6-8b19-492d-90c0-c9a4608f1543.mp4

I'm not sure if this was fixed but it appears to not be a problem in my current 1.14.1 version.


Raise the Nix dependency to 0.27.0

The motivation is simply to reduce duplicate crate builds in a downstream consumer.

@Sherlock-Holo I fixed the build on Linux.


Feature/download page

this is the download page to the chunk file project

Great!. Thank you @Nodrot. I'll merge your PR now.


Ignore cluster in ctx for non-aware caches, and error for the inverse

A cluster-aware cache has cluster indexes. Use that to error if a cluster is missing in the context. Inverse, ignore the cluster for a cluster-unaware cache, e.g. one against a normal kube cluster.
Signed-off-by: Dr. Stefan Schimanski<EMAIL_ADDRESS>

/assign @embik

/hold
for additional reviews :)

/cc @yastij

/lgtm

/hold cancel


Discounts on Tiered Pricing Based on Quantity

This is a feature suggestion.
On the product options, there should be a discount (or custom price) for various ranges of quantities.
For example:
Product Name

1-5 ($50)
6-20 ($45)
21+ ($40)

So if a customer selects 5 as the quanity, the total would be $250.

Is anyone interested in tackling this?

I'm thinking this could also be a discount rule, too.

Any chance this will be added?

I don't have any immediate need to add this feature myself. I can certainly see how it could be handy in some situtations, but I've just never had a client that needed it.
Generally I've found that shop keeps sell things in packs, not as individually counted items, which could be handled at this point with product variations. (not saying there aren't cases, I'm just saying I've never encountered a real-world use for it so far).

I need this feature for a client project I'm working on. They sell books (both digital and physical), and need to be able to offer a lower price per item the higher the quantity for that product.

I wouldn't wait for someone to add this feature in, it's not something I've discussed with others.
You may need to investigate adding the feature in yourself, or look to convince your client to handle things slightly different, by using variations.
Sometimes people worry about their shops handling all sorts of different pricing structures, but when you actually look at their sales 99% of the time they are selling single items.
Perhaps you could convince them to use something like 5 or 10 packs to handle the occasional bulk purchase. I guess schools may purchase books in bulk, but I'm thinking they're then more likely to manually process such orders anyway.

Has this feature been added yet?

Not at this stage, there have been quite a lot of other important features to consider first.

Is there an ETA on this?
How complicated would it be to add this feature?

I'd say it's quite fiddly. It's not just the case of adjusting the Product class to be able to return a different price based on a quantity, there's also the consideration of how the actual product editing interface would work.  I never used the feature myself in eCommerce, so I'm not completely sure how it works, I simply knew the feature was there.
So there's no ETA on it, it comes down to there being a business case for putting the time into the development of the feature.

I have a project for a non-profit that has needed this feature for the past year now, so I have been unable to complete it due to the lack of this feature. They sell books and digital downloads, and need to be able to have pricing based on the quanity. For example, 5 books at $2 each, or 6 - 10 books at $1.50 each... etc.
I really think this would be a very useful feature to have.

@pinecreativelabs. For an application like that, you would be looking at price break points across a range of products. Not for multiple copies of one product. So rather than tiered pricing, you should be looking at implementing a discount.

I wanted to say thank you guys! I am learning a lot with this conversation.

I already tried the discount approach, but it doesn't do what I need. What I'm needing is on a per-product basis.

Sounds more like an addon to me.  In over 15 years of creating custom shopping carts for clients I've had this sort of thing come up a total of once (around 2009).
It was a osCommerce based site and here was the Addon used (kind of) as the base:
Quantity Discounts by That Software Guy
Just thought I'd throw that out there FYI...

Is there anything happening with this?
If not, what would be needed to develop an addon like this?

Nothing to report here, if the feature gets added I'll certainly make it known via this issue thread.
I don't think they'd be enough hooks in the process to handle this with an add-on, it would likely require adding it as a feature to the community store package itself.
The question then is where to add the feature, whether it should be on the product itself (like in ecommerce for 5.6.x), or if it should be implemented as a discount rule option.
I believe the former would be easier to add at this point, but I think the latter may be potentially be more useful going into the future. What the discount rules need is the ability for the discount to be applied against one or more specified products or product groups. Then it would need the option to apply tied percentage/value discounts and apply those to the prices of products in the cart.  So adding this kind of feature into the discounts system also starts to improve the discounts features for other purposes anyway. It might also allow for discounts on orders based on quantities of products within groups - 'buy 5 t-shirts and receive 20% of your order'.

Now available in version 1.3


yarn ng g @wishtack/schematics overrides directory structure.....

When I do ng g @wishtack/schematics - the SCAM is created in my current working directory.  But if I do yarn ng....the SCAM is created at the app root level?

Hi @MHacker9404,
This is the default behavior with yarn and npm run. They run commands with the project's root path as current working directory.
Do you think we should update the documentation and just mention ng g instead of yarn ng g?
https://github.com/wishtack/wishtack-steroids/blob/97de15f63bfea09f73defd6b8be29bb18f736ab1/packages/schematics/README.md#L17

Hi @MHacker9404 , I'm closing the issue due to inactivity.
Feel free to reopen an issue if needed.
Thanks


misinterpretation of "Julian date" in tl1.

In the re-development of the package, the term "Julian Date" was misinterpreted relative to the original intent of the package.
Further clarification was provided as:

By strict definition, Julian day, which is based on the Julian calendar, assigns each solar day a number starting with January 1. In lieu of staying consistent with a numbering system that started in 4713 BC, the common convention is for Jan 1 to be the first solar day of the year -- therefore, Julian Day 1 and then progresses from there 365 days till Dec 31 (+ 1d for leap year). There is a distinct ecological connection with solar days and progression into spring (e.g., in the norther hemisphere) and this is directly linked to circadian rhythms and the timing of organism life cycle patterns and processes such as migration and reproduction. So the number of solar days provide cues for the movement of species, the flowering of trees etc. Thus, there is a distinct link between the number of days since Jan 1 and ecological function. So, let's say for example that salmon migrate annually up rivers and streams on April 1 (day 91 for a non-leap year), but as climate change progresses the date of migration becomes earlier and earlier which means the Julian Date of migration is now < 91. Ecologically speaking, it is important to understand the timing of that change and the difference (in days) between the original migration Julian date and the new Julian day and thus, for purposes of consistency, Jan 1 needs to be the 1st Julian day of the year.

See: http://tycho.usno.navy.mil/mjd.html for a discussion of the issues involved here.
Fix for this is:

We will convert the current “integer day of water year” output to a “integer day of Gregorian calendar year” representation which will bring us conceptually in line with the intent of the statistic.
Add an additional sentence to the function documentation to clarify. I would propose:

Existing Definition of TL1: Julian date of annual minimum. Determine the Julian date that the minimum flow occurs for each water year.
Transform the dates to relative values on a circular scale (radians or degrees). Compute the x and y components
for each year and average them across all years. Compute the mean angle as the arc tangent of y-mean divided by
x-mean. Transform the resultant angle back to Julian date.
Add: In these definitions, “Julian date” should be interpreted as the count of days starting with 1 on January first of a given year, ending at 365 or 366 on December 31st.

This also affects TH stats. Have fixed over there now.


Extra quotes in PSLiteral.repr

The .six fork adds extra quotes to PSLiteral.__repr__:
ipdb> from pdfminer.psparser import PSLiteral
ipdb> PSLiteral("Name")
/'Name'

... where regular pdfminer would just print /Name.
This seems to be because of this line, which switched from using '/%s' to  '/%r'.
Should be a one-character fix, unless there's some reason using %r is important?
(Seems like a minor issue, I know, but pdfquery uses __repr__ for serializing PDFs, so this becomes a blocker for py3 support.)
Thanks!

as mentionned in PSLiteral doc "Note: Do not create an instance of PSLiteral directly. Always use PSLiteralTable.intern()" This seems to take care of the problem you mention. Please reopen with a test case if not


[Update Request]: MTSD.AllDup 4.5.46 to 4.5.48 & auto-detection/ Auto-update

What type of update are you requesting?
A new version of an existing package
Current Package Identifier
MTSD.AllDup
Package Version
4.5.46
Please describe the changes you would like to see
4.5.48 was released on 4th of June, more than one month ago. It would be really nice if this was detected (and updated) automatically, because this is not the first time for this Package.
https://alldup.de/alldup_help/alldup_version.php
Thanks

It was auto updated, but for some reason winget bot and many other automated bots updating packages in winget stopped working around the end of May or start of June for some weird reason.


Segfault when invoking Login with undefined LoginTimeout field

LoginTimeout should have some default value + there should be some validation to ensure the AccessToken field never gets nil dereferenced.
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x100758574]

goroutine 1 [running]:
github.com/peterHoburg/aws-sdk-go-v2-sso-login.ssoLoginFlow({0x100a3eff8, 0x100f827c0}, 0x14000261040?, 0x1400020b600, 0x0, 0x0)
        /Users/<user>/go/pkg/mod/github.com/peter!hoburg/aws-sdk-go-v2-sso-login@v0.6.2/cred-workflow.go:380 +0x6b4
github.com/peterHoburg/aws-sdk-go-v2-sso-login.Login({0x100a3eff8, 0x100f827c0}, 0x14000055b88)
        /Users/<user>/go/pkg/mod/github.com/peter!hoburg/aws-sdk-go-v2-sso-login@v0.6.2/cred-workflow.go:135 +0x200

Good catch! I will push a fix tonight. Thanks for opening an issue.

v0.6.3 contains the fix


Please add identity support to your templates

This is a beautiful component suite! If your template includes and option for Microsoft identity, I would use it exclusively and would sign up for support.
Many thanks
Luke

@Duelbat Are you looking for WebAssembly template or Server Template?

@Duelbat This will be resolved part of #165

@Duelbat Please check the repo: https://github.com/vikramlearning/blazorbootstrap-project-templates
Screenshot:


nixos: Get rid of systemConfig kernel parameter

It was introduced in c10fe14 but removed in c4f910f.
It remained such that people with older generations in their boot
entries could still boot those. Given that the parameter hasn't had any
use in quite some years, it seems safe to remove now.
Fixes https://github.com/NixOS/nixpkgs/issues/60184

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@arianvp can you take a look at these occurences, and whether it's good to remove them? Would be nice to be able to clean up some of this for 20.03 ;-)

The idea to remove systemConfig LGTM.
There are few more occurrences of "systemConfig" across the repo:
a. https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/system/boot/loader/init-script/init-script-builder.sh#L52
b. https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/system/boot/stage-2-init.sh#L3
c. https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/system/activation/activation-script.nix#L72
d. https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/system/activation/top-level.nix#L68
e. https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/docker-container.nix#L52
Should systemConfig be removed in those too?

I think a. can be safely removed, because it sets systemConfig for stage-2, but since c4f910f55015b150bebe3d3ecdea76c1aa8bbcca this is directly substituted into stage-2 anyway. This is actually happening at b. and d., which moved a few lines and is now here.
So b. and d are still needed, and work independent of the kernel parameter since that commit.
c. is similar to b.
e. moved here and  I think is legitimate use of the systemConfig variable which is set up in c. Independent of this pr It may or may not be appropriate to document (in the configuration.nix man page) that that variable is available to activation scripts (depending on if it should be considered public api).

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/431

@arianvp are you still interested in this?
Somebody else should look over this as well, but I think apart from removing the corresponding line in https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/system/boot/loader/init-script/init-script-builder.sh#L52, this change should be fine.

@arianvp are you still interested in this?
Somebody else should look over this as well, but I think apart from removing the corresponding line in https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/system/boot/loader/init-script/init-script-builder.sh#L52, this change should be fine.