browser icon indicating copy to clipboard operation
browser copied to clipboard

ws server: assert(self.locking_thread.load(.unordered) == Thread.getCurrentId()) fails sometimes

Open krichprollsch opened this issue 2 months ago • 0 comments

I'm running the same code client multiple successive times on the server, and sometimes it panics on assertion:

debug(cdp): Req > id 6, method target.closeTarget
debug(cdp): Res > id 6, sessionID null, result cdp.target.closeTarget.Resp{ .success = true }
debug(cdp): Event > method Inspector.detached, sessionID CONTEXTSESSIONID0497A05C95417CF4
debug(websocket): (127.0.0.1:59782) connection closed: error.Closed
thread 102668 panic: reached unreachable code                                                                                               
debug(websocket): (127.0.0.1:59792) connected                    
debug(handler): connected to Stream server
debug(websocket): (127.0.0.1:59792) connection successfully upgraded                                                                        
debug(websocket): (127.0.0.1:59792) received text message
/usr/local/zig-0.13.0/lib/std/debug.zig:412:14: 0x1ad34dc in assert (lightpanda)
    if (!ok) unreachable; // assertion failure                                                                                              
             ^               
/usr/local/zig-0.13.0/lib/std/Thread/Mutex.zig:89:15: 0x1adad82 in unlock (lightpanda)
        assert(self.locking_thread.load(.unordered) == Thread.getCurrentId());                                              
              ^                                                                                                                             
/home/pierre/wrk/browser/vendor/websocket.zig/src/server/server.zig:1316:31: 0x1b6c601 in writeAllIOVec (lightpanda)
        defer self.lock.unlock();                                                                                                           
                              ^                                       
/home/pierre/wrk/browser/vendor/websocket.zig/src/server/server.zig:1303:34: 0x1b6cd20 in writeFrame (lightpanda)
        return self.writeAllIOVec(&vec);                                                                                                    
                                 ^                                    
/home/pierre/wrk/browser/vendor/websocket.zig/src/server/server.zig:1238:31: 0x1b6db9f in write (lightpanda)
        return self.writeFrame(.text, data);                                                                                                
                              ^                                       
/home/pierre/wrk/browser/src/handler.zig:73:34: 0x1b6dc31 in send (lightpanda)
        return self.ws_conn.write(data);                                                                                                    
                                 ^                                    
/home/pierre/wrk/browser/src/server.zig:286:28: 0x1b6e0ca in send (lightpanda)
            try stream.send(msg);                                                                                                           
                           ^                                          
/home/pierre/wrk/browser/src/cdp/cdp.zig:197:17: 0x21e5b61 in sendEvent__anon_34807 (lightpanda)
    try ctx.send(event_msg);                                                                                                                
                ^                                                                                                                           
/home/pierre/wrk/browser/src/cdp/target.zig:399:22: 0x2174f40 in closeTarget (lightpanda)
    try cdp.sendEvent(
                     ^                                                
/home/pierre/wrk/browser/src/cdp/target.zig:61:36: 0x2174b15 in target (lightpanda)
        .closeTarget => closeTarget(alloc, msg, ctx),
                                   ^
/home/pierre/wrk/browser/src/cdp/cdp.zig:89:26: 0x217577c in do (lightpanda)                                                                 
        .Target => target(alloc, &msg, action, ctx),
                         ^                                            
/home/pierre/wrk/browser/src/server.zig:263:27: 0x1f231e0 in do (lightpanda)                                                                 
        const res = cdp.do(self.alloc(), cmd, self) catch |err| {
                          ^                                           
/home/pierre/wrk/browser/src/server.zig:175:20: 0x1df8fd5 in readCbk (lightpanda)                                                            
            self.do(parts.msg) catch |err| {
                   ^                                                  
/home/pierre/wrk/browser/vendor/zig-js-runtime/vendor/tigerbeetle-io/io/linux.zig:762:29: 0x1d2169e in wrapper (lightpanda)                  
                    callback(                                         
                            ^                                         
/home/pierre/wrk/browser/vendor/zig-js-runtime/vendor/tigerbeetle-io/io/linux.zig:394:40: 0x1b07958 in complete (lightpanda)                 
                    completion.callback(completion.context, completion, &result);                                                            
                                       ^
/home/pierre/wrk/browser/vendor/zig-js-runtime/vendor/tigerbeetle-io/io/linux.zig:121:64: 0x1b06c71 in flush (lightpanda)                    
            while (copy.pop()) |completion| completion.complete();
                                                               ^
/home/pierre/wrk/browser/vendor/zig-js-runtime/vendor/tigerbeetle-io/io/linux.zig:90:27: 0x1b0876c in run_for_ns (lightpanda)                
            try self.flush(1, &timeouts, &etime);
                          ^                                           
/home/pierre/wrk/browser/src/server.zig:476:31: 0x1afbd50 in handle (lightpanda)                                                             
        try loop.io.run_for_ns(10 * std.time.ns_per_ms);
                              ^                                       
/usr/local/zig-0.13.0/lib/std/Thread.zig:429:13: 0x1b6f726 in callFn__anon_22799 (lightpanda)                                                
            @call(.auto, f, args) catch |err| {
            ^                                                         
/usr/local/zig-0.13.0/lib/std/Thread.zig:674:30: 0x1b09802 in entryFn (lightpanda)                                                           
                return callFn(f, args_ptr.*);
                             ^                                        
./nptl/pthread_create.c:447:8: 0x7f135a50ef51 in start_thread (pthread_create.c)                                                             
../sysdeps/unix/sysv/linux/x86_64/clone3.S:78:0: 0x7f135a58d677 in __clone3 (../sysdeps/unix/sysv/linux/x86_64/clone3.S)                     
???:?:?: 0x0 in ??? (???)                                             
Aborted  

krichprollsch avatar Dec 19 '24 13:12 krichprollsch