plugin: Golang app on linux/s390x sometimes hangs after calling "plugin.Open"

What version of Go are you using (go version)?

$ go version
go version go1.14.6 linux/s390x

Note: This problem is only found in linux/s390x. All Golang versions have the same issue.
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="s390x"
GOBIN="/usr/local/go/bin/"
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="s390x"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/ua/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_s390x"
GCCGO="gccgo"
AR="ar"
CC="s390x-linux-gnu-gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -march=z196 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build262588498=/tmp/go-build -gno-record-gcc-switches"

What did you do?

This is a sample code (ttt.go):

package main

import (
	"fmt"
	"plugin"
)

func openPlugin(name string) {
	fmt.Printf("openPlugin Start: %s\n", name)
	_, err := plugin.Open(name)
	fmt.Printf("openPlugin End: %s\n", name)
	if err != nil {
		fmt.Printf("openPlugin Error: $s - %v\n", name, err)
	}
}

func main() {
	openPlugin("cpu.so")
	openPlugin("disk.so")
	openPlugin("diskio.so")
	openPlugin("mem.so")
	openPlugin("net.so")
	openPlugin("processes.so")
	openPlugin("procstat.so")
	openPlugin("system.so")
	openPlugin("jaeger.so")
	openPlugin("zipkin.so")
}

What did you expect to see?

$ ./ttt
openPlugin Start: cpu.so
openPlugin End: cpu.so
openPlugin Start: disk.so
openPlugin End: disk.so
openPlugin Start: diskio.so
openPlugin End: diskio.so
openPlugin Start: mem.so
openPlugin End: mem.so
openPlugin Start: net.so
openPlugin End: net.so
openPlugin Start: processes.so
openPlugin End: processes.so
openPlugin Start: procstat.so
openPlugin End: procstat.so
openPlugin Start: system.so
openPlugin End: system.so
openPlugin Start: jaeger.so
openPlugin End: jaeger.so
openPlugin Start: zipkin.so
openPlugin End: zipkin.so

What did you see instead?
 It might identify where the program got stuck.

Thanks @mundaym
GoLang for linux/s390x is very weak to generate stacktrace or heapdump. I have never successfully create one for linux/s390x.
Following is my code:
package main

import (
	"fmt"
	"os"
	"os/signal"
	"plugin"
	"runtime/pprof"
	"syscall"
)

func openPlugin(name string) {
	fmt.Printf("openPlugin Start: %s\n", name)
	_, err := plugin.Open(name)
	fmt.Printf("openPlugin End: %s\n", name)
	if err != nil {
		fmt.Printf("openPlugin Error: $s - %v\n", name, err)
	}
}

func dump(uaDumpDir string) {
	fd1, err := os.Create(uaDumpDir + "goroutine.pprof")
	if err != nil {
		fmt.Printf("Failed to create goroutine dump: %v\n", err)
	} else {
		defer fd1.Close()

		profile := pprof.Lookup("goroutine")
		if profile != nil {
			profile.WriteTo(fd1, 2)
		} else {
			fmt.Println("Cannot find profile of goroutine")
		}
	}

	fd2, err := os.Create(uaDumpDir + "dumpHeap.pprof")
	if err != nil {
		fmt.Printf("Failed to create heap dump: %v\n", err)
	} else {
		defer fd2.Close()

		profile := pprof.Lookup("heap")
		if profile != nil {
			profile.WriteTo(fd2, 1)
		} else {
			fmt.Printf("Cannot find profile of heap\n")
		}
	}
}

func handleSignal(dumpChan chan os.Signal, uaDumpDir string) {
	for item := range dumpChan {
		fmt.Printf("Received sigal: %v\n", item)
		dump(uaDumpDir)
	}
}

func main() {
	uaDumpDir := "/var/log/"

	defer func() {
		if err := recover(); err != nil {
			fmt.Printf("Internal error: %v\n", err)
			dump(uaDumpDir)
		}
	}()

	dumpChan := make(chan os.Signal, 1)
	signal.Notify(dumpChan, syscall.SIGUSR1)
	defer close(dumpChan)
	go handleSignal(dumpChan, uaDumpDir)

	openPlugin("cpu.so")
	openPlugin("disk.so")
	openPlugin("diskio.so")
	openPlugin("mem.so")
	openPlugin("net.so")
	openPlugin("processes.so")
	openPlugin("procstat.so")
	openPlugin("system.so")
	openPlugin("jaeger.so")
	openPlugin("zipkin.so")
}

When the app hang, I can trigger a signal.
kill -SIGUSR1 <pid of ttt>
However, it can only generate an empty file.
root@hales1:/home/ua/go/src/main1# ./ttt
openPlugin Start: cpu.so
openPlugin End: cpu.so
openPlugin Start: disk.so
openPlugin End: disk.so
openPlugin Start: diskio.so
openPlugin End: diskio.so
openPlugin Start: mem.so
openPlugin End: mem.so
openPlugin Start: net.so
openPlugin End: net.so
openPlugin Start: processes.so
openPlugin End: processes.so
openPlugin Start: procstat.so
openPlugin End: procstat.so
openPlugin Start: system.so
openPlugin End: system.so
openPlugin Start: jaeger.so
openPlugin End: jaeger.so
openPlugin Start: zipkin.so
Received sigal: user defined signal 1

ls -ltr /var/log
...
-rw-r--r--  1 root   root                 0 Jul 29 06:39 goroutine.pprof
...

For any other platforms, it can generate dump and stack trace succcessfully.

I  just simplified the test app (ttt.go) to be:
package main

import (
        "fmt"
        "plugin"
)

func openPlugin(name string) {
        fmt.Printf("openPlugin Start: %s\n", name)
        _, err := plugin.Open(name)
        fmt.Printf("openPlugin End: %s\n", name)
        if err != nil {
                fmt.Printf("openPlugin Error: $s - %v\n", name, err)
        }
}

func main() {
        openPlugin("cpu.so")
        openPlugin("disk.so")
        openPlugin("diskio.so")
        openPlugin("mem.so")
        openPlugin("net.so")
        openPlugin("processes.so")
        openPlugin("procstat.so")
        openPlugin("system.so")
        openPlugin("jaeger.so")
        openPlugin("zipkin.so")
}

The core dump when the app hangs is:

SIGABRT: abort
PC=0x10ce518 m=0 sigcode=0

goroutine 0 [idle]:
runtime.futex(0x123b948, 0x8000000000, 0x0, 0x0, 0x108d332, 0x3ffb4a213a8, 0x10a48f2, 0x125dac0, 0x10a4964, 0x123b948, ...)
        /usr/local/go/src/runtime/sys_linux_s390x.s:336 +0x28
runtime.futexsleep(0x123b948, 0x10a5ccc, 0xffffffffffffffff)
        /usr/local/go/src/runtime/os_linux.go:45 +0x4c
runtime.notesleep(0x123b948)
        /usr/local/go/src/runtime/lock_futex.go:151 +0xa8
runtime.stopm()
        /usr/local/go/src/runtime/proc.go:1834 +0xd4
runtime.findrunnable(0xc000026a80, 0x0)
        /usr/local/go/src/runtime/proc.go:2366 +0xa7a
runtime.schedule()
        /usr/local/go/src/runtime/proc.go:2526 +0x380
runtime.park_m(0xc0004e2300)
        /usr/local/go/src/runtime/proc.go:2696 +0xa6
runtime.mcall(0x0)
        /usr/local/go/src/runtime/asm_s390x.s:237 +0x60

goroutine 1 [running]:
        goroutine running on other thread; stack unavailable

goroutine 5 [sync.Cond.Wait]:
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:310
sync.runtime_notifyListWait(0xc0000227d0, 0x63ae03bc)
        /usr/local/go/src/runtime/sema.go:513 +0x120
sync.(*Cond).Wait(0xc0000227c0)
        /usr/local/go/src/sync/cond.go:56 +0xd6
github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.(*asyncLoopLogger).processItem(0xc00007d3b0, 0x0)
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:50 +0x9e
github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.(*asyncLoopLogger).processQueue(0xc00007d3b0)
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:63 +0x4e
created by github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.NewAsyncLoopLogger
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:40 +0x8a

goroutine 6 [sync.Cond.Wait]:
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:310
sync.runtime_notifyListWait(0xc000022950, 0x63ae03bc)
        /usr/local/go/src/runtime/sema.go:513 +0x120
sync.(*Cond).Wait(0xc000022940)
        /usr/local/go/src/sync/cond.go:56 +0xd6
github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.(*asyncLoopLogger).processItem(0xc00007d4d0, 0x0)
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:50 +0x9e
github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.(*asyncLoopLogger).processQueue(0xc00007d4d0)
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:63 +0x4e
created by github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.NewAsyncLoopLogger
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:40 +0x8a

r0   0x0        r1   0xee
r2   0x123b948  r3   0x80
r4   0x0        r5   0x0
r6   0x0        r7   0x0
r8   0x0        r9   0x16
r10  0x0        r11  0x8
r12  0x8        r13  0x123b1e0
r14  0x109936c  r15  0x3ffc26fefc0
pc   0x10ce518  link 0x109936c

```<<<<<<<<<<<<<<<<<<<<<

2. Remove the fmt function calls after "plugin.Open," it  may still hang occasionally.
Following is core dump.

 Move all plugin.Open to a separate goroutine, it may still hang occasionally.

The app code is:

package main
import (
"fmt"
"plugin"
"sync"
)
func openPlugin(name string) {
fmt.Printf("openPlugin Start: %s\n", name)
_, err := plugin.Open(name)
//fmt.Printf("openPlugin End: %s\n", name)
if err != nil {
//fmt.Printf("openPlugin Error: $s - %v\n", name, err)
}
}
func main() {
var wg sync.WaitGroup
    wg.Add(1)
    go func() {
            openPlugin("cpu.so")
            openPlugin("disk.so")
            openPlugin("diskio.so")
            openPlugin("mem.so")
            openPlugin("net.so")
            openPlugin("processes.so")
            openPlugin("procstat.so")
            openPlugin("system.so")
            openPlugin("jaeger.so")
            openPlugin("zipkin.so")
            wg.Done()
    }()
    wg.Wait()

}

The core dump is:
>>>>>>>>>>>>>>>>>>>>>>>>>>
SIGABRT: abort
PC=0x10ce7a8 m=0 sigcode=0

goroutine 0 [idle]:
runtime.futex(0x123c948, 0x8000000000, 0x0, 0x0, 0x123c1e0, 0xc000029500, 0x10a4b22, 0x3ff46fd0ccc, 0x10a4b94, 0x123c948, ...)
        /usr/local/go/src/runtime/sys_linux_s390x.s:336 +0x28
runtime.futexsleep(0x123c948, 0x10a5efc, 0xffffffffffffffff)
        /usr/local/go/src/runtime/os_linux.go:45 +0x4c
runtime.notesleep(0x123c948)
        /usr/local/go/src/runtime/lock_futex.go:151 +0xa8
runtime.stopm()
        /usr/local/go/src/runtime/proc.go:1834 +0xd4
runtime.findrunnable(0xc000029500, 0x0)
        /usr/local/go/src/runtime/proc.go:2366 +0xa7a
runtime.schedule()
        /usr/local/go/src/runtime/proc.go:2526 +0x380
runtime.park_m(0xc000001c80)
        /usr/local/go/src/runtime/proc.go:2696 +0xa6
runtime.mcall(0x0)
        /usr/local/go/src/runtime/asm_s390x.s:237 +0x60

goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc00001c098)
        /usr/local/go/src/runtime/sema.go:56 +0x3a
sync.(*WaitGroup).Wait(0xc00001c090)
        /usr/local/go/src/sync/waitgroup.go:130 +0x88
main.main()
        /home/ua/go/src/main1/ttt.go:35 +0x78

goroutine 6 [running]:
        goroutine running on other thread; stack unavailable
created by main.main
        /home/ua/go/src/main1/ttt.go:22 +0x66

goroutine 35 [sync.Cond.Wait]:
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:310
sync.runtime_notifyListWait(0xc000022990, 0x4e0603bc)
        /usr/local/go/src/runtime/sema.go:513 +0x120
sync.(*Cond).Wait(0xc000022980)
        /usr/local/go/src/sync/cond.go:56 +0xd6
github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.(*asyncLoopLogger).processItem(0xc0001a5560, 0x0)
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:50 +0x9e
github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.(*asyncLoopLogger).processQueue(0xc0001a5560)
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:63 +0x4e
created by github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.NewAsyncLoopLogger
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:40 +0x8a

goroutine 36 [sync.Cond.Wait]:
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:310
sync.runtime_notifyListWait(0xc000022b10, 0x4e0603bc)
        /usr/local/go/src/runtime/sema.go:513 +0x120
sync.(*Cond).Wait(0xc000022b00)
        /usr/local/go/src/sync/cond.go:56 +0xd6
github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.(*asyncLoopLogger).processItem(0xc0001a5680, 0x0)
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:50 +0x9e
github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.(*asyncLoopLogger).processQueue(0xc0001a5680)
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:63 +0x4e
created by github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog.NewAsyncLoopLogger
        /home/ua/go/src/github.ibm.com/Unified-Agent/ua-plugin/vendor/github.com/cihub/seelog/behavior_asynclooplogger.go:40 +0x8a

r0   0x0        r1   0xee
r2   0x123c948  r3   0x80
r4   0x0        r5   0x0
r6   0x0        r7   0x0
r8   0x0        r9   0x17
r10  0x0        r11  0x8
r12  0x8        r13  0x123c1e0
r14  0x109959c  r15  0x3ffec67eb90
pc   0x10ce7a8  link 0x109959c

This appears to be caused by an infinite loop in the part of the traceback code that handles inlined functions. I can 'fix' it using the following patch:
diff --git a/src/runtime/traceback.go b/src/runtime/traceback.go
index 944c8473d2..aac91e36ed 100644
--- a/src/runtime/traceback.go
+++ b/src/runtime/traceback.go
@@ -375,7 +375,12 @@ func gentraceback(pc0, sp0, lr0 uintptr, gp *g, skip int, pcbuf *uintptr, max in
                                        }
                                        lastFuncID = inltree[ix].funcID
                                        // Back up to an instruction in the "caller".
+                                       oldtracepc := tracepc
                                        tracepc = frame.fn.entry + uintptr(inltree[ix].parentPc)
+                                       if tracepc == oldtracepc {
+                                               println("error: infinite loop in inline traceback")
+                                               break
+                                       }
                                        pc = tracepc + 1
                                }
                        }

The reason the bug is intermittent is that the tracebacks are generated by the memory profiler which is non-deterministic and not all calls to it end up in this infinite loop.
@randall77 Any ideas why this might be happening? I'm not sure if this is an issue with plugins or a strange edge case in the inlining function data.

All Golang versions have the same issue.

Note that this does not reproduce with master at tip. So Go 1.15 might not have this bug.

@mundaym
I tested from version 1.13.5 to 1.14.6. I did not test 1.15 because it is for production system and in "https://golang.org/dl/" 1.15 is said to be "Unstable version".

@mundaym
I can have a try with 1.15 if you do not use the build server now. We need to consider if 1.15 is stable enough to build a production system if it does not have this bug.

I don't think plugins should matter here. Unless the plugins were built by a different version of Go? I thought we had a check for that, though.
Sounds like a corner case. Could you find out what function it is? print funcname(f), ix, inltree[ix].parentPc, and anything else you can think of when you detect the loop?
Any way I could reproduce this myself? I think I would need the code for all the plugins.

I have told @mundaym how to get the source to build zipkin.so which is enough to generate this block issue. Please just use the source for this debugging purpose.

I've managed to reproduce this using only open source components if you want to try @randall77. You will need to use Go 1.14.6 I think, on an s390x system:
tee plugin.go << PLUGIN
package main

import (
        _ "github.com/go-openapi/spec"
)

func main() {}
PLUGIN
tee main.go << MAIN
package main

import (
        "fmt"
        "os"
        "plugin"
)

func main() {
        if _, err := plugin.Open("plugin.so"); err != nil {
                fmt.Fprintf(os.Stderr, "error while loading plugin: %v\n", err)
                os.Exit(1)
        }
}
MAIN
go get -u github.com/go-openapi/spec
go build -buildmode=plugin -o plugin.so plugin.go
go build main.go
./main

The main binary will sometimes hang when run. It will be stuck in gentraceback.

Here is some debug output:
===================
func: github.com/go-openapi/spec.init.4
ix: 0
frame.fn.entry: 0x3ff6f39d250
tracepc: 0x3ff6f39d26e
parentPc: 0x1e
===================

The assembly for spec.init.4 looks like this:
    # /home/mndy/go/plugin-bug/gopath/src/github.com/go-openapi/spec/spec.go
    00000 (36) TEXT "".init.4(SB), ABIInternal
    00001 (36) PCDATA $0, $-2
    00002 (36) PCDATA $1, $-2
    00003 (36) FUNCDATA $0, gclocals·2002e13acf59079a1a5782c918894579(SB)
    00004 (36) FUNCDATA $1, gclocals·2002e13acf59079a1a5782c918894579(SB)
    00005 (36) FUNCDATA $2, gclocals·2164b7b5825a121481ed7a83141c5b82(SB)
v5
    00006 (37) PCDATA $0, $-1
v5
    00007 (37) PCDATA $1, $-1
v5
    00008 (?)  NOP
...

v5 is the orginal InlMark which had pos +37. What is interesting is that the parentPc is 30 which corresponds to the final address of v9 which is at pos 43. The InlMark is supposed to only move to an instruction with the same pos. I wonder therefore if it is supposed to be pointing at v26 since that is at pos +37. I'm not sure how that would happen though since the code should be fully assembled and prog pc values set before the parentPc is generated.

I can't create a gomote to test on:
$ gomote create linux-s390x-ibm
# host type "host-linux-s390x" is not elastic; 0 of 0 machines connected, 0 busy

I can't cross compile to check the assembly, because it has cgo in it.
I'm afraid I can't help at the moment.

The InlMark is supposed to only move to an instruction with the same pos.

No, the inlMark should point to a different position. The position of the inlMark itself is in an inlined callee - the target of the inlMark should be in a caller.
Can you show the final assembly (via gnu objdump or something) and the entries that traceback hits in the inline table (via println in traceback.go)?

Thanks for the pointers, I think I have found the issue. The InlMark optimization here executes before the assembler has run. The optimization therefore assumes that the target Prog will not be moved or removed from the function by the assembler. In this case however the assembler does remove it. This leaves the InlMarks field pointing at an orphaned Prog that was never actually assembled and therefore does not have a valid PC value. This invalid data then breaks the traceback.
The assembler removes the original Prog as part of PIC code generation. The s390x backend rewrites external references into two instruction GOT lookups. The original Prog is replaced with a NOP that is subsequently removed by the assembler from the linked list of Progs that make up the function.
The simplest fix here is, I think, to stop the s390x assembler removing NOPs from the Prog linked list. This does appear to work. Some of the other backends also appear to remove NOPs from the linked list however I don't know if they are affected by this bug or not.
Longer term I'm not sure what the contract between the compiler and the assembler should be with respect to Prog values and the relationship between them. The assembler does do some minor optimizations and, in general, all the backends modify the Prog list significantly as they process it. Changing that is a fair amount of work but could be done.
One thing to consider for Go 1.16 is whether we should add a new pseudo instruction for inlined function marks. This could be treated the same way as the other pseudo ops we have like PCDATA and would therefore be more resilient to modifications made by the assembler. Like PCDATA it would act as a marker for the following, real, instruction at its PC value.
PS: gomote wasn't working because of weather issues at the location that hosts the build machine. They should all be working again now.

Thanks for the excellent diagnosis.

The assembler removes the original Prog as part of PIC code generation. The s390x backend rewrites external references into two instruction GOT lookups.

Can the original Prog be repurposed as one of the two GOT lookup instructions? That way it would remain a valid target.
Another technique (x86 uses this) is to rewrite the original to a nop, but leave it in the Prog list.

Longer term I'm not sure what the contract between the compiler and the assembler should be with respect to Prog values and the relationship between them. The assembler does do some minor optimizations and, in general, all the backends modify the Prog list significantly as they process it. Changing that is a fair amount of work but could be done.

We've been moving away from the assembler doing any optimizations (e.g. we removed instruction reordering a while ago), now that the compiler is pretty good. If we can get rid of optimizations (and do them in the compiler instead), that would be good.
But yes, the assembler will continue to need to do rewrites. We should definitely try to make it clear what the Prog contract should be, and stick to it.

One thing to consider for Go 1.16 is whether we should add a new pseudo instruction for inlined function marks. This could be treated the same way as the other pseudo ops we have like PCDATA and would therefore be more resilient to modifications made by the assembler. Like PCDATA it would act as a marker for the following, real, instruction at its PC value.

The inlmark nops should be real nops, that generate actual code. We should never remove them. So I think they would need to be their own op, not a marker for a following op. (Because what if there are 2 of them in a row?)

What, if anything, do you think we need to fix for 1.15?

Can the original Prog be repurposed as one of the two GOT lookup instructions? That way it would remain a valid target.
Another technique (x86 uses this) is to rewrite the original to a nop, but leave it in the Prog list.

Yeah, either would work. The second way is what I've implemented since it is a simpler change in my opinion.

The inlmark nops should be real nops, that generate actual code. We should never remove them. So I think they would need to be their own op, not a marker for a following op. (Because what if there are 2 of them in a row?)

I think it would be relatively easy to ensure and enforce that no two inline markers point to the same PC value. The advantage of it being a marker op rather than a code generating op would be that we could continue to use pre-existing instructions as inline marker targets and not just additional real nops. We'd still need the compiler to ensure a valid instruction followed the marker op.

What, if anything, do you think we need to fix for 1.15?

I'd like to do the small fix to the s390x backend that is suitable for backporting to 1.15.x and 1.14.x release branches to fix this specific bug. This isn't a recent regression so I don't think we should rush a fix into 1.15 if it is going to be released very soon, though if it does make it then great. Then for 1.16 maybe we try something more comprehensive.

@gopherbot please open backport issues.
This is a bug that causes programs to intermittently crash with no workaround.

@gopherbot please open backport issue for Go 1.15.
This is a bug that causes programs to intermittently crash with no workaround.

Re-opening because the fix (CL 247697) was temporarily reverted in CL 248718 due to test failures on arm (issue #40796). That issue has now been resolved so we should now be ok to resubmit the fix for this issue on s390x.


Using a requirements.txt file

I was wondering if it would be possible to include a requirements.txt in the root directory with the prerequisites?
I am currently making a one-line installer for a (private) module that downloads and installs seqlearn directly from github using pip install -e git+https://github.com/larsmans/seqlearn.git#egg=seqlearn. But this won't work on new virtual envirements without first installing Cython manually.
I know this has limited usefulness, but it would simplify things for me a notch.
Awesome project you guys have got going here BTW.

Seems I was wrong when experimenting with it. It is not requirements.txt file that handles the dependencies in pip, but for registered modules in pypi. Sorry about that.


Exception issue

Hey, i found a problem with the error_exception.php after calling a anonymous function with too few arguments.
the exceptionHandler has the right data ( correct type, code, message etc. ) so i guess its something in the error_exception.php
Exampe Code to reproduce ( i call this in a model ) :
public function ExceptionTest()     { 	$exampleFunc = function( $a, $b ) { }; 	$exampleFunc( null );     }
Output is :
`ErrorException #1
Uncaught ReflectionException: Method App\Models\Mitarbeiter::App\Models{closure}() does not exist in C:\WorkSpace\PHPPlayground\CodeIgniter4\application\Views\errors\html\error_exception.php:91 Stack trace: #0 C:\WorkSpace\PHPPlayground\CodeIgniter4\application\Views\errors\html\error_exception.php(91): ReflectionMethod->__construct('App\Models\Mita...', 'App\Models\{clo...') #1 C:\WorkSpace\PHPPlayground\CodeIgniter4\system\Debug\Exceptions.php(151): include('C:\WorkSpace\PH...') #2 [internal function]: CodeIgniter\Debug\Exceptions->exceptionHandler(Object(ArgumentCountError)) #3 {main} thrown `

if you need more informations feel free to ask :)

I'm not sure what I can do to fix this. It happens because you're calling a closure with the incorrect number of parameters. When we attempt to examine it with new ReflectionMethod it is unable to find a closure with one parameter and that name and throw its own Exception. You're hitting an issue with the language itself, not CI. The only option we have is to not try to display values passed to the functions, but that's such a handy feature when debugging that I'm not sure it makes sense to remove that for this edge case.

well i just wondering why the exceptionHandler has the right data but does not display it ( and shows a ( for me ) unclear error description ). there are much more cases that are results in something like this - i know such errors should be found by development tools, but not all do it right.
it would be a nice icreasement in consistency and easier ( and faster ) error understanding

You're right, it would be simpler, but what's happening is that while reporting an exception from something in your script (in this case the missing parameter), it tries to use Reflection to describe the parameters in that method. Which is then throwing another exception because the ReflectionMethod itself fails when it encounters that specific situation (a Closure with a missing parameter).
My current belief is that the frequency we'll hit cases when we run into this is a very very small percentage of the time, and that the ability to inspect the parameters passed into methods the rest of the time is more important. Obviously, we'll monitor this as more people get to use it and see if it becomes a bigger issue than I think it will be. If that's true, then we'll decide what to do then.
If you can create a better solution and submit a pull request, I'm more than happy to look at it.

hey, found a simple solution : https://github.com/bcit-ci/CodeIgniter4/pull/551

Thanks! I was going to start looking into that soon since I realized it's a bigger issue than I thought it was originally while working on the Template Engine blog post this week.


[feature request] NodePool Governance Capability: yurthub are delegated to report heartbeats for nodes that disconnected with cloud

What would you like to be added:
Yurthub needs to add a leader election mechanism and a lease proxy mechanism.
Leader election mechanism can be described as:

Yurthub senses the existence of pool-coordinator and participates in leader election if it can connect to the cloud.
Leader Yurthub should list/watch the lease resources in the pool-coordinator.

Lease proxy mechanism can be described as:

every node(yurthub component) will send node lease to pool-coordinator at interval(10s), and add delegate annotation in node lease when node disconnected from the cloud.
Leader Yurthub list/watch node lease from pool-coordinator, and it will proxy the node lease to cloud kube-apiserver when node lease has delegation annotation. If the lease of pool-coordinator node is also need to be forwarded, the leader YurtHub will give priority to forwarding Node leases of its node.

by the way, yurthub should upload node scope data(like pods, node) to pool-coordinator when pool-coordinator is detected in the nodePool.
Notes: For details, please refer to the proposal: https://github.com/openyurtio/openyurt/pull/772
Why is this needed:
As mentioned in the proposal(https://github.com/openyurtio/openyurt/pull/772), in the node pool governance, the yurthub connected to the cloud will elect a leader, and the leader will forward the heartbeat of the node disconnected from the cloud to the cloud, so that the cloud can distinguish whether the disconnection of the node is caused by a node failure or a network disconnection. Therefore, yurthub needs to add a leader election mechanism and a heartbeat information reporting mechanism.
others
/kind feature

/assign @rambohe-ch

Progress update:

pool-coordinator existence checker: in progress
leader election for yurthub: almost finished
a new client certificate for pool-coordinator in yurthub: in progress
lease forwarding: todo

State machine for leader election of Yurthub:

workflow for leader election of Yurthub:

workflow for Yurthub coordinator:

/close


Deploy site via Netlify

Add status badge to README
Add netlify logo to footer
Add netlify.toml for PR preview deployments

Fixes #8

Netlify has been configured correctly for this repo. You can see in the status checks the deploy-preview which shows a preview of the live site.

/lgtm

Hi @adambkaplan ,
I have approved this PR but I am not the authorized user to do the action in the repo.
Please help add me so that I can modify or merge PR here.
Thanks!

@zhangtbj Prow merges code automatically if the pull request has the right set of labels. Our repo is configured to require the "approved" and "lgtm" labels. Approved can only be added by approvers in the OWNERS file, lgtm can be added by anyone in the Shipwright organization.


Upgrade Chopper library to [8.4.0] & fix breaking changes issues

Changes:

Upgraded the Chopper library to version 8.4.0 to leverage the latest features and enhancements.
Updated the library version across the project for consistency.
Revised the README file to reflect recent changes and improvements.
Ensured documentation accuracy by updating Dart docs to align with the latest changes.
Addressed and resolved breaking changes introduced in the Interceptor module.

Steps Taken:

Performed the necessary steps to upgrade the Chopper library to version 8.4.0, including modifying dependencies and adapting the codebase to accommodate any API changes.
Updated project files and configurations to reflect the new library version.
Ensured that the README file accurately reflects the latest project information and usage instructions.
Reviewed and updated Dart documentation to maintain consistency and clarity in code documentation.
Identified and resolved breaking changes in the Interceptor module, ensuring seamless integration with the updated library version.

Testing:

Conducted comprehensive testing to verify the stability and compatibility of the upgraded library.
Verified that the application behaves as expected and that all features are functioning correctly post-upgrade.

@Arnooodles fixed pub score issue, now its 140/140


"Address already in use" even when it's not

Hi
I am running multiple mitmproxy instances on one machine.  Each instance has its own port between 49000 and 50000. All instances are listening on interface <IP_ADDRESS>. Instances stop and restart multiple times per hour.
Most instances start fine. However, a few random ones will fail with the error that address is already in use:
Error starting proxy server: error(98, 'Address already in use')```

However, netstat does not show any process using the port:

```$ sudo netstat -nlp | grep 49338```

I also do not see any zombie processes trying to start the same instance.

Any idea what's causing this? Is the problem that every instance is listening on <IP_ADDRESS>? How does mitmproxy decide whether a port is "open"?

We just use plain Python sockets internally: https://github.com/mitmproxy/netlib/blob/9fbeac50ce3f6ae49b0f0270c508b6e81a1eaf17/netlib/tcp.py#L769-L771
This doesn't look like it's caused by mitmproxy, sorry.

I ran into this problem too an not found any solution yet. Someone said about ps -f ax | grep mitm
I tried an kill the processes in ps command result but mitmproxy still can not be started. The error message is the same.

This is generally caused by sockets still having data to send after you've shut down mitmproxy (this includes closing the sockets).  You should check netstat -Wplant (drop the W if you're on RHEL 6 or CentOS 6 or older) and look for sockets in TIME_WAIT state with the local port set to the port mitmproxy was bound to.  Presently, you have to wait for all of those sockets to finish closing or time out (default timeout is 4 minutes) before you can start another mitmproxy instance on that port.
@mhils: a change that could be made that would solve this issue in the majority of cases is setting SO_REUSEADDR on the socket.  This is portable to all platforms, and the semantics are roughly the same (same enough for mitmproxy's uses, anyway)

@dwfreed, we do set SO_REUSEADDR on the socket. ;-)
On Mon, 11 Jul 2016, 04:00 Doug Freed<EMAIL_ADDRESS>wrote:

This is generally caused by sockets still having data to send after you've
shut down mitmproxy (this includes closing the sockets). You should check netstat
-Wplant (drop the W if you're on RHEL 6 or CentOS 6 or older) and look
for sockets in TIME_WAIT state with the local port set to the port
mitmproxy was bound to. Presently, you have to wait for all of those
sockets to finish closing or time out (default timeout is 4 minutes) before
you can start another mitmproxy instance on that port.
@mhils https://github.com/mhils: a change that could be made that would
solve this issue in the majority of cases is setting SO_REUSEADDR on the
socket. This is portable to all platforms, and the semantics are roughly
the same (same enough for mitmproxy's uses, anyway)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mitmproxy/mitmproxy/issues/782#issuecomment-231704315,
or mute the thread
https://github.com/notifications/unsubscribe/AA-NPpd8zYtZfrMFMoVuwQL0hJNcujXzks5qUiJQgaJpZM4GBrZE
.


Correct check for alpine when setting up GNUPGHOME

When build using makejdk-any-platform.sh, OPERATING_SYSTEM is not set:
build/sbin/prepareWorkspace.sh: line 323: OPERATING_SYSTEM: unbound variable

Need to check for Alpine like it does in https://github.com/adoptium/temurin-build/blob/c78dc6cf2d1f1ddbe689220afd80eb957ac6d2a5/build-farm/make-adopt-build-farm.sh#L46
Also GNUPGHOME setup for Alsa not correct if run directly from makejdk-any-platform.sh

I'd have through we'd have another variable for this, but I'm ok with this fix - thanks.

thanks, not when not called through Adopt farm


Login and Register functionallity

Intalled DEVISE gem
Add User Model and controller
Created Views for devise, added NAME to user Table and registration
Users Can confirmate their accounts and reset passwords
Run linters and FIX

You made a great effort to implement all the requirements. Go ahead and merge it!

Highlights

Perfect implementation of email mocks for email confirmation and password reset

Cheers, and Happy coding!👏👏👏


-Force option is poorly documented

This document describes -Force as forcing, which is not useful. What does the command do differently when -Force is (or is not) specified?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ff41017e-0b1d-f23a-c828-940161f6afad
Version Independent ID: afccc44c-a70f-669c-c6f4-01a6e12b772f
Content: Sync-AppvPublishingServer (appvclient)
Content Source: docset/windows/appvclient/sync-appvpublishingserver.md
Product: w10
GitHub Login: @brianlic-msft
Microsoft Alias: brianlic

@officedocsbot assign @yogkumgit

Hi @nobrassring , thank you for your feedback.
I think this parameter was updated since you have published this issue. Could you check? Thanks.

If it has been changed, it is not much of an improvement. The definition of '-Force' still uses the word 'force', which makes the description circular as in
"Q: What is a dog?  A: A dog is a dog."
If I ran the command without '-Force' when would it fail to sync?  Why would it fail to sync?
Those are the questions this description should answer.

Ok, I am adding more detail.
Thank you for your feedback.

@dariomws306  Thank you very much for the contribution and updating the documentation with PR. @nobrassring Hope this update is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.

@officedocsbot close

Much better now. Thank you.

Thank you for your contribution!


Eli/static ffmpeg

@hjpotter92 finally found the problem at least, I think you were right and there's a missing option, this static build can't read from remote URLs:
ffmpeg -i https://storage.googleapis.com/livepeer-test-vod/test-max/BigBuckBunny-30sec.mp4?
ffmpeg version 6.0-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
[tcp @ 0x58f7240] Failed to resolve hostname storage.googleapis.com: System error

That works fine with the apt version of ffmpeg

Ah ha: https://superuser.com/questions/1141609/android-tcp-error-failed-to-resolve-host-name-from-static-library

The "run nscd service" solution sounds a bit hacky but not really my area of expertise.. WDYT @iameli @hjpotter92 do we resort to compiling ourselves or install from another apt repo? ubuntuhandbook.org/index.php/2023/03/ffmpeg-6-0-released-how-to-install-in-ubuntu-22-04-20-04

I'll push a commit to test if the ppa from blog post ppa:ubuntuhandbook1/ffmpeg6 is working. would have been ok with installing nscd as well, although that requires a systemd service to be setup and running as well. since we already have the set of flags we need for compiling ffmpeg6, we could try that too if the ppa installation doesn't work out for us.


N41: bevy_rapier_collider_gen

Part of #1233

Merged, thanks for the PR!
Tip: since we're using squash&merge, you probably want to use PR-specific branches (like n41-bevy-rapier-collider-gen) instead of committing to source - to avoid resolving conflicts in your source for future PRs.


Hide part of header

Hi all,
Is there a way to hide the date part of the header but still show the all day events?
I use a custom header in my app, so I use the renderHeader with null to hide the header but I want to show the all day events.
PS: How can I change the color of the all day events?
Thanks

@voulgarakis Thank you for flagging this. Currently there is no way to do that. The workaround could be to implement your own renderHeader function.
If you create a pull request for it, I'm happy to merge it. Thanks!

P.S
You can provide your own theme to modify the color of event cells. https://github.com/acro5piano/react-native-big-calendar?tab=readme-ov-file#theme


UX: Multi chart support

Summary
Enable user to upload and use custom chart for devtron applications.
Motivation
Users might want to use and bring their own charts to cater to specific use cases.
Proposal
Users can upload charts to use with Devtron applications.
Uploaded charts will be available to use across all devtron applications.

Multi-charts had same requirements as BYOC.
Revisited BYOC and made minor changes post discussion.


index page, items in 'File Listing' wrapping

Items will break and wrap on spaces in the title.  This change fixes that...

This is old, but if you still want this merged in, please squash commits. Don't need reverts on a single line of code change.

Sorry
I need to read up on Git, especially merge vs squash.  I've been using the Windows Git client, most of Git's help seems to be based on command line use.  Meanwhile, I'm trying to not get too frustrated with (old) rdoc formatting...

I couldn't resolve this merge myself. Maybe just re-open a clean PR?

Yes, I'll prepare one...

Closing for #984


[BEAM-13388] [BEAM-13052] Cherry-pick ProtoCoder implementation onto 2.35.0 release branch.

This adds #15817 to the release branch.
It was previously reverted  since there were reasons to believe it may slow down the release train, turns out it's the opposite - another change to CloudDLP functionality now needs this change to work.
Thanks, @dpcollins-google for this contribution.
Please add a meaningful description for your change here

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

R: @aaltay

Run Python 3.6 PostCommit


rfc: add signle write journal

The rendered version: single write journal

cc @huachaohuang

Confirm another question~ (storage seems also have the same question
Now, we have 2 engine nodes (L1 and F2), and we add 2 engine Nodes(F3, F4) to the cluster, how do F3, F4 know whether they need to replicate L1's data?
Or where is suitable to maintain metadata like default-tablet-group -> Leader L1, Follower F2, F4, Nothing F3?
Orchestrator could give a full list of L1, F2, F3, F4, but it doesn't know F3 no need to replicate...

@zojw Now we only need to implement single writer journal, it means that only one engine is writer, the others are readers. But once partition is added to engine,  we should add a new node to manage the destribution of partitions.

why do we a Single Write Journal?

@w41ter-l @huachaohuang I noticed that we're implementing the API designed here. If the RFC is accepted, please update the status and pull request links, start a tracking issue for the work (added in the RFC) and merge this PR.
Otherwise, the RFC process is fake.

I think this RFC proposes two things: a new SingleWriteJournal API and an implementation of the API. I suggest that we split the RFC into two, one RFC describes the semantic of SingleWriteJournal (I prefer LeaderBasedJournal, though), another RFC describes an implementation of the new API.

I have divided this RPC into two parts. This part mainly focuses on the design of the leader based journal, the design of the shared journal will be submitted with a new RPC later.
cc @huachaohuang @tisonkun @zojw

Closed in favor of #361. Please help to improve the stream store design in #361.


Use random nonce when accepting the proposal

Description
Feature to use shared nonce was added in go-perun in this commit. But this was missing some changes, which were added later in this commit. This PR will cover the second part which will set nonce-share when accepting a proposal
Category

Improvement
Relevant issue
Closes #101
Testing
All existing tests should pass
Checklist

[x] Name is added to the NOTICE file, if it is not present already.
[x] Changes are rebased onto the target branch.

@anagha-ks  Tests were failing, as the chProposal was nil, when you tried to access it in acceptChProposal. This was due to two reasons:

It was not assigned to responder entry in HandleProposal
It was being retrieved from map in acceptChProposal using empty key "".
Fixed both of them with a separate commit, as i was not able to comment on / suggest changes on those parts of the code.

@anagha-ks Tests were failing, as the chProposal was nil, when you tried to access it in acceptChProposal. This was due to two reasons:
1. It was not assigned to responder entry in `HandleProposal`

2. It was being retrieved from map in `acceptChProposal` using empty key "".
   Fixed both of them with a separate commit, as i was not able to comment on / suggest changes on those parts of the code.

Ok, sorry i got it now.


Assertion error when importing in threaded mode

When using threaded=yes I get this error quite quickly:
Traceback (most recent call last):
  File "/usr/local/bin/beet", line 9, in <module>
    load_entry_point('beets==1.3.13', 'console_scripts', 'beet')()
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/__init__.py", line 1104, in main
    _raw_main(args)
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/__init__.py", line 1094, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/commands.py", line 893, in import_func
    import_files(lib, paths, query)
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/commands.py", line 870, in import_files
    session.run()
  File "/usr/local/lib/python2.7/dist-packages/beets/importer.py", line 316, in run
    pl.run_parallel(QUEUE_SIZE)
  File "/usr/local/lib/python2.7/dist-packages/beets/util/pipeline.py", line 301, in run
    out = self.coro.send(msg)
  File "/usr/local/lib/python2.7/dist-packages/beets/util/pipeline.py", line 160, in coro
    task = func(*(args + (task,)))
  File "/usr/local/lib/python2.7/dist-packages/beets/importer.py", line 1258, in user_query
    plugins.send('import_task_choice', session=session, task=task)
  File "/usr/local/lib/python2.7/dist-packages/beets/plugins.py", line 455, in send
    result = handler(**arguments)
  File "/usr/local/lib/python2.7/dist-packages/beets/plugins.py", line 117, in wrapper
    assert self._log.level == logging.NOTSET
AssertionError

With threaded=no the importer runs just fine.

Can you please provide some more information to help reproduce the problem? For example, can you narrow down a plugin that's causing it? Does it happen every time, or just sometimes? Does it happen with particular music files? Which version are you running? Have you tried the latest source? Et cetera.

$ pacman -Qi beets-git
Name           : beets-git
Version        : 1.3.13.r93.gce91a0c-1
Description    : Flexible music library manager and tagger - git version
Architecture   : any
URL            : http://beets.radbox.org/
Licenses       : MIT
Groups         : None
Provides       : beets
Depends On     : python2-munkres  mutagen  python2-setuptools  python2-unidecode
python2-musicbrainzngs  python2-yaml  python2-enum34  python2-jellyfish
Optional Deps  : python2-pyacoustid: acoustic fingerprinting [installed]
python2-flask: web interface [installed]
gstreamer0.10-python: BPD audio player plugin
python2-pylast: lastgenre plugin [installed]
Required By    : beets-check-git  beets-copyartifacts-git
Optional For   : None
Conflicts With : beets
Replaces       : None
Installed Size :   3.12 MiB
Packager       : Unknown Packager
Build Date     : Tue 23 Jun 2015 12:49:19 PM CEST
Install Date   : Tue 23 Jun 2015 12:49:24 PM CEST
Install Reason : Explicitly installed
Install Script : No
Validated By   : None
$ beet version
beets version 1.3.14
plugins: check

Is there anything specific I can do on my end to reproduce this problem?
Does it still occur if you disable the beets-check plugin?

I had the same issue pop up after enabling the beets-check plugin. The error occured on the second album of a group import and didn't occur with beets-check disabled.
beet import --flat -g 2012\ -\ The\ Best\ Of\ Santana\ \(Sony\ Music\)/

<normal output for the first grouping, then starts a second grouping>

/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/01. Persuasion.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/02. You Just Don't Care.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/03. Black Magic Woman,Gypsy Queen (Live).flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/04. Incident At Neshabur.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/05. Se A Cabo.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/06. Hope You're Feeling Better.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/07. Toussaint L'Overture.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/08. Guajira.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/09. Everything's Coming Our Way.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/10. Europa (Earth's Cry Heaven's Smile) (Live).flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/11. Stormy.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/12. Well All Right.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/13. One Chain (Don't Make No Prison).flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/14. Peace On Earth- Mother Earth- Third Stone From The Sun (Medley).flac (14 items)

Correcting tags from:
    Santana - The Best Of Santana Volume 2
To:
    Santana - The Best of Santana, Volume 2
URL:
    http://musicbrainz.org/release/92c67fbd-9131-4703-b8ca-30351f320d54
(Similarity: 99.9%) (tracks) (2000, US)
 * Black Magic Woman/Gypsy Queen (Live)                            -> Black Magic Woman / Gypsy Queen (live)
 * Incident At Neshabur                                            -> Incident at Neshabur
 * Se A Cabo                                                       -> Se Acabo
 * Europa (Earth's Cry Heaven's Smile) (Live)                      -> Europa (Earth's Cry Heaven's Smile) (live)
 * Peace On Earth- Mother Earth- Third Stone From The Sun (Medley) -> Peace on Earth... Mother Earth... Third Stone From the Sun (title)
Traceback (most recent call last):
  File "/bin/beet", line 9, in <module>
    load_entry_point('beets==1.3.14', 'console_scripts', 'beet')()
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/ui/__init__.py", line 1140, in main
    _raw_main(args)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/ui/__init__.py", line 1130, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/ui/commands.py", line 881, in import_func
    import_files(lib, paths, query)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/ui/commands.py", line 858, in import_files
    session.run()
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/importer.py", line 316, in run
    pl.run_parallel(QUEUE_SIZE)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/util/pipeline.py", line 347, in run
    self.coro.send(msg)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/util/pipeline.py", line 160, in coro
    task = func(*(args + (task,)))
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/importer.py", line 1376, in manipulate_files
    session=session,
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/importer.py", line 671, in manipulate_files
    item.try_write()
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/library.py", line 609, in try_write
    self.write(path, tags)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/library.py", line 581, in write
    plugins.send('write', item=self, path=path, tags=item_tags)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/plugins.py", line 458, in send
    result = handler(**arguments)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/plugins.py", line 117, in wrapper
    assert self._log.level == logging.NOTSET
AssertionError

beets version 1.3.14
plugins: chroma, convert, duplicates, embedart, fetchart, info, missing, play, smartplaylist, zero

Hmm, this sounds like it could be an issue with the plugin. Could one of you please try asking the author if that seems plausible (perhaps by filing a bug with that project)?

Closing this issue since it seems to be a problem with beets-check.

In spite of this being closed, I'll note my observations, too, as I noticed this as well.
First of all, the plugin seems to be horribly outdated as concerns the plugin API, so it may overall be a bad idea to use it. This doesn't affect the issue though.
After a little debugging, the error seems to occur because the plugin listens to several events ('item_imported', 'album_imported', 'write', 'after_write', 'after_convert', 'import_task_choice'). In threaded mode, after some time, these are likely to coincide, more so because calculating checksums can take a while.
Thus, I don't believe this to be a problem of beets-check only, but also a limitation of the plugin system.
What is the precise reasoning behind asserting the loglevel to be NOTSET? The history shows changing this, but the comments don't mean a lot to me. Moreover, the previous loglevel restoring would not have the expected behaviour, either; the following would happen:

event sent from task 1 to the plugin, setLevel(DEBUG) (as an example), old_log_level=NOTSET
event from task 2, setLevel(DEBUG), old_log_level=DEBUG
processing the event from task 1 finishes, setLevel(old_log_level), i.e. setLevel(NOTSET)
processing the event from task 2 finishes, setLevel(old_log_level), i.e. setLevel(DEBUG)

(I don't know how threading is implemented, however, and this reasoning could be mistaken)

Well, here's the thing: the beets logging logic specifically tried to prevent that problem. In logging.py, see ThreadLocalLevelLogger, which ensures that each thread can have an isolated logging level per-logger. So when task 1 and task 2 overlap in separate threads while adjusting their levels, they should never interact with each other—it should be impossible for one's level to pollute the other's.
Is there any chance something nasty is going on in that plugin that is preventing the thread-local level logic from kicking in?

It probably does, it doesn't log on self._log, but gets the logger with log = logging.getLogger('beets.check'). I believe there was some way to pass a thing named LoggerFactory or similiar to the Python logging infrastructure, that way plugins could be prevented from messing it up. Need to search that one.

That would do it!
It's probably best to avoid monkeypatching global modules, which can be a problem for testing and when embedding as a library, but we should indeed fix the function to use from beets import logging instead of import logging.

https://docs.python.org/2/library/logging.html#logging.setLoggerClass is what i was talking about, but it is indeed global.


Fix duplicate symbols for test rules

This makes changes to test.bzl to remove the default internal_test_deps being added to all snapshot tests. This is causing duplicate symbol issues in Bazel 7 as framework search path logic has changed. In Bazel 7, the snapshot test target can't depend on the runfiles lib without introducing duplicate symbols at link time, this is because the BazelRunfiles target it depends on already links the runefiles lib. This updates the rule / usage of it to pass this dependency explicitly so it can be removed in the bazel 7 branch but maintained here for others who need it.
Changes:

Dont set interal_test_deps to have a default value for snapshot tests
Explicitly set each key word argument in each test factory, this stops issues like this from coming up again in the future

Mode some changes to prepare the target for Bazel 7 along with adding a bazel_version.is_bazel_7 constant similarly to how they determine this in rules_apple


implemented quotes react app

Drift: https://video.drift.com/v/abpatPk3euhfSivtJuXCmLLRXhA4YjOD5T5G6LscaIQ/
Topics Covered:
-Use Effect
-Spinner
Output:

Metric
Value

alert_status
:white_check_mark: OK

bugs
1

code_smells
5

reliability_rating
B (at least 1 Minor Bug)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0

Follow the commit message format
Work on the modularity (constants, directory structure, scss modularization)
Format the code properly


dabble.statistics node with associated changes

Main changes:

New dabble.statistics node created with new data types cum_avg, cum_min, cum_max
Data types obj_groups and obj_tags deprecated, replaced by a dictionary obj_attrs that is more generalisable. obj_attrs["groups"] for group size checking, obj_attrs["flags"] for social distancing, obj_attrs["ids"] for object tracking. This affects a number of existing nodes, and deprecation / version added notices have been added for user clarity.
Tracking ids under obj_attrs["ids"] are now a list of int instead of a list of str
Glossary updated with above changes, and also with better descriptions of all and fps data types
draw.legend refactored for greater flexibility - different data types can be chosen for display. Previous potentially confusing 2 configs have been streamlined into a single config show. It does not fail silently now when no show is selected
draw.tag refactored to adapt to obj_attrs change. Also added the option to display multiple attributes in a tag, separated by a comma (e.g. "56, male")
Excluded unit test of OpenCV Mosse tracker on MacOS (Darwin) due to inconsistent results. It passes on Linux. Suspected to be caused by different C++ library in MacOS.

closes https://github.com/aimakerspace/PeekingDuck-Private/issues/27
4 scenarios to try out
# 1. object counting
nodes:
- input.recorded:
    input_dir: /Users/ngleeping/Desktop/benchmark/multiple_people.mp4
- model.yolo
- dabble.bbox_count
- dabble.fps
- dabble.statistics:
    identity: count
- draw.bbox
- draw.legend:
    show: ["count", "fps", "cum_avg"]
- output.screen

# 2. social distancing
nodes:
- input.recorded:
    input_dir: /Users/ngleeping/Desktop/benchmark/multiple_people.mp4
- model.posenet
- dabble.keypoints_to_3d_loc
- dabble.check_nearby_objs
- dabble.statistics:
    conditional_count: obj_attrs['flags'] == 'TOO CLOSE!'
- draw.bbox
- draw.tag:
    show: ["flags"]
- draw.legend:
    show: ["cum_max", "cum_avg", "cum_min"]
- output.screen

# 3. group size checking
nodes:
- input.recorded:
    input_dir: /Users/ngleeping/Desktop/benchmark/multiple_people.mp4
- model.posenet
- dabble.keypoints_to_3d_loc
- dabble.group_nearby_objs
- dabble.check_large_groups:
    group_size_threshold: 2
- dabble.statistics:
    length: large_groups
- draw.bbox
- draw.group_bbox_and_tag
- draw.legend:
    show: ["cum_max", "cum_avg", "cum_min"]
- output.screen

# 4. object_tracking
nodes:
- input.recorded:
    input_dir: /Users/ngleeping/Desktop/benchmark/multiple_people.mp4
- model.jde
- dabble.statistics:
    maximum: obj_attrs[ids]
- draw.bbox
- draw.tag:
    show: ["ids"]
- draw.legend:
    show: ["cum_max"]
- output.screen

@liyier90 would be good if you could see if the changes here cause any unintended problems, especially for 1) tracking; 2) RTD

In legend.py L35, change:
    .. image:: /assets/api/legend.png
    |br|

to
    .. image:: /assets/api/legend.png

    |br|

Doesn't affect the rendered docs but eliminates warning when building. The rest of the docs looks to be fine

In legend.py L35, change:
    .. image:: /assets/api/legend.png
    |br|

to
    .. image:: /assets/api/legend.png

    |br|

Doesn't affect the rendered docs but eliminates warning when building. The rest of the docs looks to be fine

Fixed, thanks.


Stock related modules no longer working.

You can try for yourself to install any of the stock related modules.  None of them work.  I know this is important as many people use the Mirror solely, or mostly as a financial indicator.  I will try to fix it, however they are not my modules and the owners are not responding to input.
Regards, and love the Mirror coding Mich and team.
Please only submit reproducible issues.
If you're not sure if it's a real bug or if it's just you, please open a topic on the forum: https://forum.magicmirror.builders/category/15/bug-hunt
Problems installing or configuring your MagicMirror? Check out: https://forum.magicmirror.builders/category/10/troubleshooting
When submitting a new issue, please supply the following information:
Platform: Place your platform here... give us your web browser/Electron version and your hardware (Raspberry Pi 2/3, Windows, Mac, Linux, System V UNIX).
Node Version: Make sure it's version 0.12.13 or later.
MagicMirror Version: Now that the versions have split, tell us if you are using the PHP version (v1) or the newer JavaScript version (v2).
Description: Provide a detailed description about the issue and include specific details to help us understand the problem. Adding screenshots will help describing the problem.
Steps to Reproduce: List the step by step process to reproduce the issue.
Expected Results: Describe what you expected to see.
Actual Results: Describe what you actually saw.
Configuration: What does the used config.js file look like? Don't forget to remove any sensitive information!
Additional Notes: Provide any other relevant notes not previously mentioned. This is optional.

All stock modules are 3rd party module, please contact the developer of the module.
For further support refer to http://forum.magicmirror.builders.
I'm closing this issue for now. If you feel this issue should remain open, please let me know.


Fixed the destination where fastfetch.1 is generated.

cmake -B build -S fastfetch generates fastfetch.1 in the directory where cmake is executed.
This patch is a fix to generate fastfetch.1 in PROJECT_BINARY_DIR, that is, the build directory.

Thanks. A hotfix release will be cut to fix this issue.


Enchantment glint does not appear

i am pretty sure there must be a way to activate the enchantment glint, i asked in every subreddit i could for help, but no one replied.
so i had to make a github account hoping i'll get an answer.
the issue is basically that, i don't see any enchantment glints and i have no idea how to activate them, i'm not even sure if i should post this, i think this place is for bug reports, but i am desperate.

What leads you to believe this is related to CIT Resewn? What about sending logs? there is not enough information to keep this open.

What leads you to believe this is related to CIT Resewn? What about sending logs? there is not enough information to keep this open.

When i remove CIT, the problem stops, this is why i believe the problem has to do with CIT, but if you think the problem might be something else, please tell me!


(Bug)  Failed initializing app

Cannot read property 'get' of null in gdstore.get or userStorage.userProperties.get
may be problem with gun or gdstore need to check.

Will be tested after release on Prod

Checked on eWallet (ver 0.15) and Dapp (ver 0.15)
The issue isn't reproduce.
User can load wallet successfully without errors when user open the page, recover wallet or internet connection


edited content of BPD Leadership Summit.md

Fix Typo on Leadership Summit Safety Guidelines #126

Updated the content for the BPD Leadership Summit.md based on comment

Thank you for this contribution.

Close #126


Fossil rename to Fossil Sample?

Some fossil samples don't have fossils in them. Need to look at this part of the model again.
Check data to support this.

@elisabethdeom - I'd like to have a conversation about the data we are currently collecting in the BC Fossils resource model to make sure we have the right nomenclature for the data

Resource Model to be renamed to Fossil Sample as per May 03 meeting


add the possibility to use a README.md instead of a readme.txt file

Description of the Change
Add an environment variable README_NAME to enable users to us a README.md instead of a readme.txt file.
Alternate Designs
Automatically detect the readme's file name.
Benefits
As many WordPress plugins hosted on GitHub are nowadays using a README.md file, this change enables users to use the assted action on those plugins as well.
Possible Drawbacks
n/a
Verification Process
I ran the bash script locally and on one of my plugins which uses a README.md file.
Checklist:

[x] I have read the CONTRIBUTING document.
[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[ ] I have added tests to cover my change.
[ ] All new and existing tests passed.

Applicable Issues
n/a

Resolves #16.

@2ndkauboy Do you mind moving this PR over to https://github.com/10up/action-wordpress-plugin-asset-update? I'm wrapping up splitting this repo (see #21).

Closed in favor of new standalone repository. See https://github.com/10up/action-wordpress-plugin-asset-update/pull/3


LTS-7 version of Criterion doesn't work on Win32

    C:\Users\appveyor\AppData\Local\Temp\1\stack2272\criterion-<IP_ADDRESS>\cbits\cycles.c:55:2: error:
         error: #error Unsupported OS/architecture/compiler!
         #error Unsupported OS/architecture/compiler!

Which makes sense: https://github.com/bos/criterion/blob/8ffa852aa6263208b77c4199a94ef3aa96dad312/cbits/cycles.c#L3 (and other preprocessor checks).
This is fixed in Criterion master: https://github.com/bos/criterion/commit/fb794484bcf7c88b1b3d5f7fb33c356742f4d31f
Any chance to get a new Criterion release including this fix, and an update in the LTS plan?
CC @bos

Sure! I added a notification for stackage, we need a hackage release before we can act.

Since I set up a notification, let's close this.


HRESULT  0x80042288 on Creating the Network

I used the current tool (v<IP_ADDRESS>) with ArcGIS 10.6 (version <IP_ADDRESS>21) and older releases v<IP_ADDRESS>, and  v<IP_ADDRESS> with ArcGIS 10.4.1 (version <IP_ADDRESS>86) for processing HERE data 2017 in Canada and in all of them I am getting this error at the very end level of creating Network
Exception from HRESULT: 0x80042288
at ESRI.ArcGIS.Geodatabase.IDatasetContainer2.CreateDataset(IDEDataset DataElement)
at GPProcessVendorDataFunctions.ProcessNavStreetsDataFunction.CreateAndBuildNetworkDataset(String outputFileGdbPath, Double fgdbVersion, String fdsName, String ndsName, Boolean createNetworkAttributesInMetric, Boolean createArcGISOnlineNetworkAttributes, String timeZoneIDBaseFieldName, Boolean directedTimeZoneIDFields, String commonTimeZone, Boolean usesHistoricalTraffic, ITrafficFeedLocation trafficFeedLocation, Boolean usesTransport) in C:\tmp\xxx\src\street-data-processing-tools-<IP_ADDRESS>\street-data-processing-tools-<IP_ADDRESS>\ProcessNavStreetsDataFunction.cs:line 6988
at GPProcessVendorDataFunctions.ProcessNavStreetsDataFunction.Execute(IArray paramvalues, ITrackCancel trackcancel, IGPEnvironmentManager envMgr, IGPMessages messages) in C:\tmp\xxx\src\street-data-processing-tools-<IP_ADDRESS>\street-data-processing-tools-<IP_ADDRESS>\ProcessNavStreetsDataFunction.cs:line 3137
Failed to execute (ProcessNavStreetsData).
I technically built same tool except of two changes:
A -  I removed two fields "EXPR_LANE", and "CARPOOLRD", from the StreetsFieldNames   array and also their associated fields from StreetsFieldTypes
B -  I removed the Avoid Unpaved Roads restriction attribute I dsiabeld
       evalNetAttr = CreateAvoidNetworkAttribute("Avoid Unpaved Roads", "[PAVED] = \"N\"",
                                                     true, fgdbVersion, edgeNetworkSource, AvoidHighFactor);
           attributeArray.Add(evalNetAttr);

and removed it from the restrictionsArray in ProccessNavStreetsDataFunctions.cs
Can you please let me know why this is happening and how can I fix this?

@Behseini, the HRESULT 0x80042288 translates as a 32-bit integer as -2147212664.  Looking up this number in fdoError at https://enterprise.arcgis.com/en/sdk/latest/windows/fdoError.html shows the error returned is FDO_E_FIELD_EVALUATOR_FIELD_NOT_FOUND (The network field evaluator is associated with a field that cannot be found).
You mentioned in A that you removed the fields EXPR_LANE and CARPOOLRD, but did you also remove the restriction attributes that are created from these fields using CreateAvoidNetworkAttribute(), as well as any references to these restriction attributes when creating travel modes?

My colleague answered this question in 2018 with the likely cause of the error, and there has been no further discussion since then.  I'm going to close this issue, assuming that the problem has been resolved or is no longer relevant.  If you're still experiencing problems, feel free to reopen!


import/extensions doesn't work with inline Webpack loader syntax

When updating from 2.22.1 to 2.23.4 errors started showing up for these kind of imports:
// ESLint error: Missing file extension for "!!raw-loader!./SimpleSceneLayerExample" eslint import/extensions
const exampleText: string = require('!!raw-loader!./SimpleSceneLayerExample').default;
// Same error
import exampleText from '!!raw-loader!./SimpleSceneLayerExample';

If I do add the extension, I'll get an error that I shouldn't use the extension:
// ESLint error: Unexpected use of file extension "tsx" for "!!raw-loader!./SimpleSceneLayerExample.tsx" eslint import/extensions
const exampleText: string = require('!!raw-loader!./SimpleSceneLayerExample.tsx').default;

This is our ESLint config (I removed all rules except for import/extensions to test if no other rules are conflicting):
{
    "plugins": ["@typescript-eslint"],
    "parser": "@typescript-eslint/parser",
    "settings": {
        "import/resolver": {
            "node": {
                "extensions": [".mjs", ".js", ".json", ".ts", ".tsx"]
            }
        },
        "import/extensions": [".js", ".mjs", ".jsx", ".ts", ".tsx"]
    },
    "rules": {
        "import/extensions": [
            "error",
            "ignorePackages",
            {
                "js": "never",
                "mjs": "never",
                "jsx": "never",
                "ts": "never",
                "tsx": "never"
            }
        ]
    },
    "env": {
        "jest": true,
        "browser": true
    }
}

I noticed that on 2.22.1 require statements weren't checked for import extensions, so I think the problem is that import/extensions can't handle inline Webpack loader syntax properly.
// This is fine in  2.22.1 with the above rules
const exampleText: string = require('!!raw-loader!./SimpleSceneLayerExample.tsx').default;
// This results in an error in both 2.22.1 and 2.23.4
// ESLint error: Unexpected use of file extension "tsx" for "./SimpleSceneLayerExample.tsx" eslint import/extensions
import { SimpleSceneLayerExample } from './SimpleSceneLayerExample.tsx';

That's because this is nonstandard syntax (that shouldn't be used anyways), and as such, your specifier doesn't have an extension.
File paths have extensions, and this isn't a file path.
Either way, this is a duplicate of #954.


SAP HANA XS Advanced, Creating a Node.js Module

Hi! It seems that validation in this tutorial also missed. Following code
  - name: core_xsjs     type: nodejs     path: core_xsjs     provides:       - name: core_xsjs_api         properties:           url: '${default-url}'     requires:       - name: UAA-service       - name: hdi_db       - name: db
validated as incorrect.
I've also tried old Node.js module naming js instead of core_xsjs which is still on some screenshots.
It could be my mistake in this case, please kindly advice.
Thanks.

Hi, thanks for bringing this into attention. It is being worked on. Your response should be validating correctly (regardless of the name of the js module).

Yes, it validates now. Thank you.


Bug fixes

Fixes these and the tests
https://trello.com/c/Jj0SWeNr/323-bug-error-invalid-argument-while-writing-logs-to-file-for-cand-pawan-rawal

This change is

Works now. Need to merge with the context timeout change in develop and have to test again to confirm.

Review status: 0 of 2 files reviewed at latest revision, all discussions resolved.

Comments from Reviewable

Merged.


UseAuthorization middleware

UseAuthentication runs in the pipeline and automatically applies the default authentication handler. There is no corrilary for authorization. This would be useful for scenarios like authorized static files:
https://github.com/aspnet/AuthSamples/issues/28.
UseAuthorization should have parameters that mimic the Authorize attribute. Failing any parameters, it should run the default policy (which is hard to do yourself https://github.com/aspnet/Security/issues/1733).
Here's the minimal AuthN code you have to write today and it doesn't run any policy:
https://github.com/aspnet/AuthSamples/blob/c7bb6607307072f6e098d0e4a2c9fa7e6d017916/samples/StaticFilesAuth/Startup.cs#L120-L134

This exists now: https://github.com/aspnet/AspNetCore/blob/master/src/Security/Authorization/Policy/src/AuthorizationMiddleware.cs


Make PHP router work easily with built-in php test server

The simplest way to test a PHP application is to use the built-in PHP Server. It works quite well, but it needs to know if the router script didn't find a result and if it needs to check for a file. This works by not echoing anything and returning false.
Easiest way is to change this in the routes.php file. You could add a check if a file exists or not to make the 404 page work if needed.

if (php_sapi_name() != 'cli-server') {
    any('/404','views/404.php');
} else {
    return false;
}

php -S <IP_ADDRESS>:8000 routes.php
Edit: If the routes capture destinations where files exist, then this won't work.
Alternatively placing the following at the beginning of routes.php would help.
This might need more input sanitization before it can be used:

if (php_sapi_name() === 'cli-server') {
    $fileName = __DIR__.parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
    if (file_exists($fileName) && !is_dir($fileName)) return false;
}

This is beyond the job of the router.


Document each_iter

https://github.com/Indra-db/flecs-ecs-rs/blob/727b5378994070c9ddd8cc251801b640a113a925/flecs_ecs/src/core/utility/traits/iter.rs#L124
https://github.com/Indra-db/flecs-ecs-rs/blob/727b5378994070c9ddd8cc251801b640a113a925/flecs_ecs/src/core/utility/traits/reactor.rs#L56
The second (1-indexed usize) parameter is slightly confusing. I am guessing it is the iteration number we are on.

done


Macro recursion limit reached for very simple macro in <linux/sched.h>

What reproduces the bug?
forkexecsnoop.bt: https://gist.github.com/aktau/3cddaa07018a11feb37548c7555dc5c5
Error:
$ sudo ~/bin/bpftrace $HOME/exp/bpftrace/forkexecsnoop.bt 1
/home/aktau/exp/bpftrace/forkexecsnoop.bt:33:22-30: ERROR: Macro recursion limit reached: CLONE_IO, 0x80000000
        if ($flags & CLONE_IO)             { printf("CLONE_IO|");             }
                     ~~~~~~~~
/home/aktau/exp/bpftrace/forkexecsnoop.bt:33:22-30: ERROR: syntax error, unexpected end of file
        if ($flags & CLONE_IO)             { printf("CLONE_IO|");             }
                     ~~~~~~~~

The file takes a long time to parse, and then errors out. The relevant part of <linux/sched.h> shows how simple these macros are: https://github.com/torvalds/linux/blob/39c3c396f8131f3db454c80e0fcfcdc54ed9ec01/include/uapi/linux/sched.h#L34.
What is there to recurse on? What am I doing wrong?
bpftrace --info
System
  OS: Linux 5.17.11-1-amd64 #1 SMP PREEMPT Debian 5.17.11-1 (2022-06-09)
  Arch: x86_64

Build
  version: v0.15.0-66-gdcc1
  LLVM: 13.0.1
  ORC: v2
  foreach_sym: yes
  unsafe uprobe: no
  bfd: no
  bcc_usdt_addsem: yes
  bcc bpf_attach_uprobe refcount: yes
  bcc library path resolution: yes
  libbpf btf dump: yes
  libbpf btf dump type decl: yes
  libbpf bpf_prog_load: yes
  libbpf bpf_map_create: yes
  libdw (DWARF support): no

Kernel helpers
  probe_read: yes
  probe_read_str: yes
  probe_read_user: yes
  probe_read_user_str: yes
  probe_read_kernel: yes
  probe_read_kernel_str: yes
  get_current_cgroup_id: yes
  send_signal: yes
  override_return: no
  get_boot_ns: yes
  dpath: yes
  skboutput: no

Kernel features
  Instruction limit: 1000000
  Loop support: yes
  btf: yes
  map batch: yes
  uprobe refcount (depends on Build:bcc bpf_attach_uprobe refcount): yes

Map types
  hash: yes
  percpu hash: yes
  array: yes
  percpu array: yes
  stack_trace: yes
  perf_event_array: yes

Probe types
  kprobe: yes
  tracepoint: yes
  perf_event: yes
  kfunc: yes
  iter:task: yes
  iter:task_file: yes
  kprobe_multi: no
  raw_tp_special: yes

Actually the error message is wrong, it is not the recursion limit that is reached, it is the assumed length of the lexer buffer from a workaround implemented in 28fd10322, src/lexel.l lines 225-229
if (unput_count >= 1000 || leng <= 0) {
  driver.error(loc, std::string("Macro recursion limit reached: ")
                    + original_yytext + ", " + original_s);
  yyterminate();
}

(gdb) p leng
$1 = 0
(gdb) p unput_count
$2 = 5

The purpose of the workaround as described in #1650 is to catch an error related to recursion, however it erroneously checks yyleng, which is, contrary to what is written in the commit, not the lexer's buffer length (that is YY_BUF_SIZE), but the length of the currently processed token. This causes all macros whose value is longer than their name to error out:
# bpftrace -e "#define MACRO 00000
BEGIN { print(MACRO); }"
Attaching 1 probe...
0
# bpftrace -e "#define MACRO 000000
BEGIN { print(MACRO); }"
stdin:2:9-20: ERROR: Macro recursion limit reached: MACRO, 000000
BEGIN { print(MACRO); }
        ~~~~~~~~~~~
stdin:2:9-20: ERROR: syntax error, unexpected end of file
BEGIN { print(MACRO); }
        ~~~~~~~~~~~


Feb 10 - Web Wednesday

Event Information

Category
Details

Stream Date
Feb 10, 2021

Stream Time
3:00 PM

Title
In Development

Description
In Development

Speaker
CH & Jen Looper

SharePoint ID
12775

SharePoint Status
Published

Additional Resources:

Event Checklist
10 Weeks Prior

[ ] Title & Description Finalized
[ ] Tracking Links/Short links
[ ] Published
[ ] Calendar Invite

streamed, data in spreadsheets


Add deletHandler for kubeconfig

Provide API to delete SA and rolebinding created for generating the kubeconfig.
issue: https://github.com/harvester/harvester/issues/1019

@yaocw2020 can we add server URL address validation, thanks

Why don't we use the kubernetes core API?

Why don't we use the kubernetes core API?

Agree, I have deleted the deleteKubeconfig API.


✨ feature flag part-1

todo apis:

[x] get feature flag list
[x] get flag by key
[x] create flag
[ ] archive flag
[ ] flag tags
[ ] update setting
[ ] update targeting rules

Remaining api will be moved to a new pull request.


How to use Microsoft Elegant Font

I don't know how to solve it, thank you

Thank you for using.
There are two problems.

excelPath needs to contain the path to Excel.
You seem to be trying to put the path to a resource there.

If you want to use the data from Resources, do it like this.

It will be easier to understand if you clone and look at the Test project.

Thank you for using this.
You need to use IFontResolver to resolve this.
If you clone it and refer to the Test project, you will find the code shown in the figure.
For more information about IFontResolver, see PDFSharp.


Instanced geometry from .glb produces error

.glb with instanced geometry created in blender imports successfully, but cannot be grabbed or deleted.  There might be input interference from 'x' bound to build mode.
Problem object is live in https://app.webaverse.com/?r=room-2. Sometimes also shows up in parcels.
Test objects: https://www.dropbox.com/sh/hnem1ilp32vcgcy/AACPzjSgP0yG0KbC1P-SmqpDa?dl=0

This is because the geometry is too large to generate physics for. It is about 11MB of pure geo.
For cases like this I think it makes sense to elide geometry generation entirely, so we will need to choose a geometry complexity cutoff.
That will make selection more difficult but perhaps we can replace the geometry with a bounding box or something.

re: collision generator - ok that makes sense, I tried with a lighter file and it worked.
But should note the 11mb .glb is actually because big textures - the geo is pretty light.
Instance_test2.glb is the same mesh - 1000+ pieces of geo at 300kb - shows as 3 drawcalls in babylon.js and imports into weba - perhaps it de-instance the meshes at some point.

We do indeed de-instance the meshes. Physics are not instanced.

I will think about this and find a way to fix it.


paginator incompatibility with MySQL 5.7

i think its related to MySQL 5.7 change, can't have order by that isn't in select for aggregations, group or distincts included.
this code don't work on Mysql 5.7 :
  $query = $advert->createQueryBuilder('a')
            ->orderBy('a.date', 'DESC')
            ->getQuery();

        $query
            ->setFirstResult(1)
            ->setMaxResults(2);

Exception:

An exception has been thrown during the rendering of a template ("An exception occurred while executing 'SELECT DISTINCT id_0 FROM (SELECT o0_.id AS id_0, o0_.date AS date_1, o0_.title AS title_2, o0_.author AS author_3, o0_.content AS content_4, o0_.published AS published_5, o0_.updated_at AS updated_at_6, o0_.nb_applications AS nb_applications_7, o0_.slug AS slug_8 FROM oc_advert o0_) dctrn_result ORDER BY date_1 DESC LIMIT 2 OFFSET 1':
SQLSTATE[HY000]: General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column 'dctrn_result.date_1' which is not in SELECT list; this is incompatible with DISTINCT") in OCPlatformBundle:Advert:test.html.twig at line 12.

you must set some parameters to your mysql server to fix this problem :
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

This has already been reported.

Duplicate of #4846


Exception: Trait 'Illuminate\Database\Eloquent\Factories\HasFactory' not found

Hi! I use Laravel 7 and run composer install nwidart/laravel-modules and get 8.2.0 version.
Next I run model generation php artisan module:make-model -m Recipe Scoring and model generated with:
    protected static function newFactory()
    {
        return \Modules\Scoring\Database\factories\FeatureFactory::new();
    }

But I get error:
Trait 'Illuminate\Database\Eloquent\Factories\HasFactory' not found

The composer package management tool provides the ability to specify compatible versions of dependent libraries.
Composer file does not currently contain such restrictions:

You are not using a version constraint for the laravel framework in require. Specifying require-dev does not work with installation.

Issue 1112

In Laravel 7, run...
composer require nwidart/laravel-modules "7.0"

You should require the correct version during the composer require command.

@nWidart I agree. And you should specify the correct compatible versions in the composer.json file. =)

@4n70w4 Bro, have you found a way to fix the error issue?

@MrNoBody619 see answer from e-lyde


Error in using Class TwoQubitGate

**I want to create a Class MyGate(cirq.TwoQubitGate). I have written the code in the correct syntax provided using colab AI. But, I am getting an attribute error at last like "AttributeError: module 'cirq' has no attribute 'TwoQubitGate' '' **
Following is the code:

import cirq
Define a custom two-qubit gate
class MyGate(cirq.TwoQubitGate):
def init(self, θ, φ):
super().init()
self.θ = θ
self.φ = φ
def _num_qubits_(self):
    return 2

Create an instance of the gate
gate = MyGate(np.pi/4, np.pi/8)
Create a quantum circuit
qubits = cirq.LineQubit.range(2)
circuit = cirq.Circuit()
Apply the gate to the circuit
circuit.append(gate(qubits[0], qubits[1]))
Print the circuit
print(circuit)
*
Why I am getting the Attribute Error : module 'cirq' has no attribute 'TwoQubitGate' .
I have also updated cirq using 'pip install --upgrade cirq' where it is showing Requirements already satisfied.
Cirq version:1.3.0

TwoQubitGate was removed in #4601.  Please use cirq.Gate instead.


v4 plain object + abstract factory for Mappers and Templates

https://github.com/Azure/autorest.java/issues/442
Certain ObjectSchema with no property, no parent, no child seems better to write as Object (as done in v1) instead of named class.
              - schema: &ref_33
                  type: object
                  apiVersions:
                  - version: '2019-08-01'
                  language:
                    default:
                      name: WhatIfChange-before
                      description: The snapshot of the resource before the deployment is executed.
                      namespace: Api20190801
                  protocol: {}
                required: false
                serializedName: before
                language:
                  default:
                    name: before
                    description: The snapshot of the resource before the deployment is executed.
                protocol: {}

Fluent would do something like this to populate Inner.
https://github.com/weidongxu-microsoft/autorest.java/blob/v4_fluentgen/fluentgen/src/main/java/com/azure/autorest/fluent/mapper/FluentMapper.java#L35
which calls ObjectMapper.addInnerModels.
At present the implemetation in ObjectMapper is kind of ad-hoc. Let me know if you have plan to do this consistently, e.g. as inherit (like old CompositeTypeJvaf.IsInnerModel), or some other way.

PS, not related to this PR. I tried to re-generate tests with 3.0.6149 (core 3.0.6158) but there seems to be multiple failures. It persists without code from this PR.
It seems to be problem with parameter on client. Still checking what went wrong.
https://github.com/weidongxu-microsoft/autorest.java/compare/v4..v4_fix_tests

I'm able to generate with autorest core 3.0.6169

Oh yes, 3.0.6169 is good.

I've switched to use factory, so I can inherit and customize mapper / template in fluentgen.


Required: Smart License with ipv6 Proxy

Add support for ipv6 Proxy syntax under smart license.

Support has been added to 0.7.0 release of the nac-aci module. More information about the new module and the migration is available here: https://developer.cisco.com/docs/nexus-as-code/#!unified-module-migration/migration


Tooltip text

The signing parameters for the Issue page need brief tooltip text describing the role of the different parameters. @bmuramatsu or @dmitrizagidulin if either of you want to make some suggestions for them here in this issue, I can put them into the code.

This ones an @dmitrizagidulin item.
But, should DID be capitalized on the DID Method label?

This ones an @dmitrizagidulin item.
But, should DID be capitalized on the DID Method label?

Need content for the tooltips. @kayaelle @dmitrizagidulin @bmuramatsu @jchartrand - please add content as you are inspired,

All I got is that I think the tool tip describes (or defines) the function
that the selection does. Key Suite is the cryptographic exchange method
used to sign the credential. Or something like that.
Brandon
On Thu, Nov 3, 2022 at 1:21 PM kayaelle @.***> wrote:

Need content for the tooltips. @kayaelle https://github.com/kayaelle
@dmitrizagidulin https://github.com/dmitrizagidulin @bmuramatsu
https://github.com/bmuramatsu @jchartrand
https://github.com/jchartrand - please add content as you are inspired,
—
Reply to this email directly, view it on GitHub
https://github.com/digitalcredentials/sandbox/issues/57#issuecomment-1302435227,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAFXVRVITF6UEUXIPQLIOYLWGPX7BANCNFSM6AAAAAAQZAQJVI
.
You are receiving this because you were mentioned.Message ID:
@.***>


In-memory join hangs forever when primary table has rows and secondary table has no rows

Title explains the entire issue. I think the root cause is https://github.com/dolthub/go-mysql-server/blob/42581cb0f708bec576e84de0d550e121f0602496/sql/plan/join.go#L390-L392. When EOF is returned by that line loadSecondary immediately returns that EOF without resetting primaryRow or pos. This causes the joinIter to get stuck on this row forever and fetch the secondary table RowIter infinite times. I'm not sure why that EOF behavior is necessary. Additionally, even if that were fixed, the secondary table RowIter would be fetch once per primary row, which it shouldn't have to do. This is happening because the number of rows in the row cache is being used to determine if the row cache has been filled yet, but if the cache was filled with an empty table it behaves as if it was uninitialized, so it keeps trying to fill it over and over. This can be expensive for tables that fetch rows via slow operations, like network requests, even if the number of rows is 0.

Thanks for the report, @andremarianiello. Sorry for not responding sooner!
This is definitely a bug. We'll fix in the next release.


Remove uncommented raw URL

Likely, committed by accident as part of fix of #33

This cruft was added in https://github.com/boostorg/gil/commit/fe8dcea00d4ae393ddbe0c92909026e39731375b
@chhenning  I have no idea how this slipped through CI builds :)

Good find!


Pass cognito userpool id to Lambda

Is your feature request related to a problem? Please describe.
I need a lambda to lookup list of cognito groups a user other than the logged-in user belongs to. This is pretty easy to write but in the context of multi-env the lambda needs to know which cognito user pool id to connect to.
Describe the solution you'd like
user pool id should be passed as a parameter to the lambda
Describe alternatives you've considered
Hardcoding the user pool ids based on env or parsing identity.issuer in the passed claims (see https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html).
Might be related to https://github.com/aws-amplify/amplify-cli/issues/689 and https://github.com/aws-amplify/amplify-cli/issues/678

Probably using the same approach described in #1099 is the way to go with this one.

@hisham Today we released an updated flow as a part of the functions category to pass resource identifiers like the cognito userpool ID to a lambda function as environment variables and also populate the corresponding lambda execution role to access the userpool ID. You can install the latest version of the CLI and go through the amplify update function flow to update your exisiting functions to access your Amplify generated resources in the project.

@kaustavghosh06 why this issue was closed man? "Today we released an updated flow as a part of the functions category to pass resource identifiers like the cognito userpool ID ..." where are the docs? I saw this same comment from you many times here in many issues, sorry dude but we're not clairvoyant, we just want to use amplify. Thanks.

@LucasAndrad  I've commented on this issue previously as to how to go about accessing the userpoolID in the comment and here's the documentation in the comment above - https://github.com/aws-amplify/amplify-cli/issues/1185#issuecomment-497212093 Did you give it a shot? What's the issue that you're facing? Here are the docs for reference - https://docs.amplify.aws/cli/function#function-templates


Dynamic themes: things should readjust dynamically on changes etc.

The upstream original already took care of much of it by using a static Theme instance from which widgets feed, but changes to it are not being picked up, since
a) Widgets are not notified
b) they're initialized once, in their ctors, so couldn't do much anyay...
Only Theme params used directly for the draw calls can dynamically affect widgets -- but even they can't do anything about e.g. resizing.

b07ef444c5afcd7559803068446b1ffc5b756e45: there's an onThemeChanged callback now (and it's even being called :) )

The layouts still can't shrink for some reason -- even though e.g. the rightmost box happily does so on crop size changes!


Offer Change Process - Offer Deletion Flow

Description:
This issue outlines the development of a new flow for deleting offers within portal-marketplaces. The Offer Deletion Flow will allow offer providers to remove offers that are no longer valid or needed. This functionality must be implemented with careful consideration to prevent accidental deletions and to maintain data integrity.
Objectives:

To provide a user-friendly interface for deleting offers.
To ensure that deletions are intentional and authorized.
To maintain system integrity and prevent orphaned records by updating all related components.

Pre-requisites:

User must have the necessary permissions to delete offers.
Offer must not be associated with any ongoing or completed transactions.

Tasks:

Backend Development:

Create an API endpoint for offer deletion (DELETE /api/offers/{offerId}).
Implement logic to check user permissions and offer status before deletion.
Ensure cascading updates/deletions are handled for related entities (e.g., offers linked to promotions).

Frontend Development:

Design and implement a 'Delete' button in the offer management interface.
Add a confirmation dialog to prevent accidental deletions.
Connect the frontend with the backend deletion API.

Database Updates:

Update database triggers or stored procedures if necessary to handle the deletion process.

Acceptance Criteria:

Users with the correct permissions can delete offers through the interface.
A confirmation step is present to prevent accidental deletions.
Deletion of an offer correctly updates or removes all associated data (where applicable; some need to be kept for auditing).
The system logs all deletion actions for audit purposes.
The deletion process does not negatively impact system performance.

Test Scenarios:

Delete an offer with no active transactions and verify it is removed from the system.
Attempt to delete an offer with active transactions and ensure the process is blocked.
Verify that users without deletion permissions cannot remove offers.
Confirm that all related data is either updated or deleted as appropriate.
Check that the system logs the deletion event with sufficient details for auditing.

Dependencies:

User authentication and authorization service.
Database integrity constraints and relationships.

Notes:

The deletion flow should be thoroughly tested in a staging environment before deployment.
Backup and recovery strategies should be reviewed to ensure they align with the new deletion capabilities.

Tags: [Backend], [Frontend], [Database], [Permissions], [Deletion]

Was presented in the open planning ⇾ developing is done by portal, committer are defined

Hello @jjeroch , @jjeroch
Since the feature is a 24.08 feature and the development phase is coming to an end, we need a status on the feature.

[ ] Currently you are assigned (Responsible) → Is this correct? If not, please assign the correct contact person
[ ] Please check whether the status (backlog, work in progress ...) is set correctly
[ ] Please check whether there is an assignment to a committee or expert group (supported-by) to be found on the board
[ ] Please comment on the current status of the feature
[ ] Are all SubTasks (issues from other repositories that deal with the feature) linked? → The easiest way is to mention the feature here in the issue (via the ID) so we can see which teams/repositories are involved.

If you need any clarification, please get in touch, thank you very much.
Stephan

Back to backlog. No commitment for delivery


api: doc type fix

Signed-off-by: Lars Holm Nielsen<EMAIL_ADDRESS>

Coverage remained the same at 90.496% when pulling 16d6153d3d6d9641d2500082cf1fc1f3b3b6fb95 on lnielsen:fix into d05c1fd83876b11ebc464c9268f9aac37f4a0114 on inveniosoftware:master.

Coverage remained the same at 90.496% when pulling ba23a8b8a4e35ff23ce0b6ff4937b5a2e263cb1f on lnielsen:fix into d05c1fd83876b11ebc464c9268f9aac37f4a0114 on inveniosoftware:master.