Open Nabil372 opened 1 year ago
Describe the bug
Segmentation faults occur during the following scenario:
Segfaults only occur when awaiting an async function in the socketify websocket message function.
Note: I also get segfaults before the connections are closed when sending high volumes of messages from 2 connections.
To Reproduce
simple example of socketify websocket server
import asyncio from typing import Union from socketify import App, CompressOptions, OpCode, WebSocket async def async_function(): await asyncio.sleep(1) async def ws_message(ws: WebSocket, message: Union[str, bytes], opcode: OpCode): await async_function() ws.cork_send({"message": message}) app = App() app.ws( "/echo", { "compression": CompressOptions.DISABLED, "max_payload_length": 16 * 1024, # 16KB "idle_timeout": 60, # 1 minute, "message": ws_message, "drain": lambda _: print("draining"), }, ) app.listen( 3000, lambda config: print("Listening on port %d" % config.port), ) app.run()
const WebSocket = require('ws'); const url = `ws://localhost:3000/echo`; console.log(`Connecting to URL: ${url}`); async function run() { const ws = new WebSocket(url); ws.on('message', function incoming(data) { console.log(data.toString()); }); ws.on('pong', function heartbeat() { ws.isAlive = true; }); ws.on('error', function error(err) { console.error(err); }); ws.on('close', function close() { console.log('connection closed'); }); // send a message every 5ms setInterval(() => { ws.send('Hello!'); },5); } run();
When the nodejs script receives a SIGINT the following occurs:
$ python -m socketify main:app Listening on port 3000 [1] 9977 segmentation fault python -m socketify main:app
Expected behavior socketify should not have segfaulted
Desktop (please complete the following information): I ran this on Ventura MacOS 13.5 (22G74), using python 3.11.5 and node 18.16.0
Sounds like a life cycle issue with CFFI
Describe the bug
Segmentation faults occur during the following scenario:
Segfaults only occur when awaiting an async function in the socketify websocket message function.
Note: I also get segfaults before the connections are closed when sending high volumes of messages from 2 connections.
To Reproduce
simple example of socketify websocket server
When the nodejs script receives a SIGINT the following occurs:
Expected behavior socketify should not have segfaulted
Desktop (please complete the following information): I ran this on Ventura MacOS 13.5 (22G74), using python 3.11.5 and node 18.16.0