Errors in multithreading #6

Description

@hwei-hw

Thanks for sharing this great work!

When I try to deploy it on my machine, I encounter one error about the multithreading in line 274 to line 279 at cllm/services/tog/tool.py:

results = batch_exec(
send_message,
arguments_list,
min(15, len(arguments_list)),
await_result=True,
)

When I submit who are you? in the website, the parameter min(15, len(arguments_list)) is 1. Then, I encounter this the following error:

Traceback (most recent call last):
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
obj = _ForkingPickler.dumps(obj)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
TypeError: cannot pickle '_thread.RLock' object
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
return await self.app(scope, receive, send)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in call
await super().call(scope, receive, send)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/applications.py", line 122, in call
await self.middleware_stack(scope, receive, send)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in call
raise exc
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in call
await self.app(scope, receive, _send)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in call
raise exc
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in call
await self.app(scope, receive, sender)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call
raise e
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call
await self.app(scope, receive, send)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 718, in call
await route.handle(scope, receive, send)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
await self.app(scope, receive, send)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
response = await func(request)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
raw_response = await run_endpoint_function(
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
return await dependant.call(**values)
File "/home/haowei/project/ControlLLM/cllm/services/pool.py", line 19, in innner_wrapper
return await func(*args, **kwargs)
File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 57, in tog
output = model(request, subtasks)
File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 46, in call
return self.got.solve(request, subtasks, multi_processing)
File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 1105, in solve
optimal_solutions_list = batch_exec(
File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 119, in batch_exec
return _exec(func, arguments_list)
File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 97, in _exec
results.append(func(*arguments))
File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 274, in solve
results = batch_exec(
File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 121, in batch_exec
return _async_exec(func, arguments_list, max_workers, await_result)
File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 112, in _async_exec
results[i] = r.result()
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 451, in result
return self.__get_result()
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
raise self._exception
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
obj = _ForkingPickler.dumps(obj)
File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
TypeError: cannot pickle '_thread.RLock' object
^CINFO: Shutting down
INFO: Waiting for application shutdown.
INFO: Application shutdown complete.
INFO: Finished server process [860450]
Process finished with exit code 0

But when I set this parameter as 0, which means:

results = batch_exec(
send_message,
arguments_list,
0,
await_result=True,
)

The whole code work! So, maybe there are some bugs in this multithreading code?

Looking forward your reply.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      Errors in multithreading #6

      Description

      @hwei-hw

      Thanks for sharing this great work!

      When I try to deploy it on my machine, I encounter one error about the multithreading in line 274 to line 279 at cllm/services/tog/tool.py:

      results = batch_exec(
      send_message,
      arguments_list,
      min(15, len(arguments_list)),
      await_result=True,
      )

      When I submit who are you? in the website, the parameter min(15, len(arguments_list)) is 1. Then, I encounter this the following error:

      Traceback (most recent call last):
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
      obj = _ForkingPickler.dumps(obj)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
      cls(buf, protocol).dump(obj)
      TypeError: cannot pickle '_thread.RLock' object
      The above exception was the direct cause of the following exception:
      Traceback (most recent call last):
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
      result = await app( # type: ignore[func-returns-value]
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
      return await self.app(scope, receive, send)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in call
      await super().call(scope, receive, send)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/applications.py", line 122, in call
      await self.middleware_stack(scope, receive, send)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in call
      raise exc
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in call
      await self.app(scope, receive, _send)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in call
      raise exc
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in call
      await self.app(scope, receive, sender)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call
      raise e
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call
      await self.app(scope, receive, send)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 718, in call
      await route.handle(scope, receive, send)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
      await self.app(scope, receive, send)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
      response = await func(request)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
      raw_response = await run_endpoint_function(
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
      return await dependant.call(**values)
      File "/home/haowei/project/ControlLLM/cllm/services/pool.py", line 19, in innner_wrapper
      return await func(*args, **kwargs)
      File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 57, in tog
      output = model(request, subtasks)
      File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 46, in call
      return self.got.solve(request, subtasks, multi_processing)
      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 1105, in solve
      optimal_solutions_list = batch_exec(
      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 119, in batch_exec
      return _exec(func, arguments_list)
      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 97, in _exec
      results.append(func(*arguments))
      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 274, in solve
      results = batch_exec(
      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 121, in batch_exec
      return _async_exec(func, arguments_list, max_workers, await_result)
      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 112, in _async_exec
      results[i] = r.result()
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 451, in result
      return self.__get_result()
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
      raise self._exception
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
      obj = _ForkingPickler.dumps(obj)
      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
      cls(buf, protocol).dump(obj)
      TypeError: cannot pickle '_thread.RLock' object
      ^CINFO: Shutting down
      INFO: Waiting for application shutdown.
      INFO: Application shutdown complete.
      INFO: Finished server process [860450]
      Process finished with exit code 0

      But when I set this parameter as 0, which means:

      results = batch_exec(
      send_message,
      arguments_list,
      0,
      await_result=True,
      )

      The whole code work! So, maybe there are some bugs in this multithreading code?

      Looking forward your reply.

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          Errors in multithreading #6

          Description

          @hwei-hw

          Thanks for sharing this great work!

          When I try to deploy it on my machine, I encounter one error about the multithreading in line 274 to line 279 at cllm/services/tog/tool.py:

          results = batch_exec(
          send_message,
          arguments_list,
          min(15, len(arguments_list)),
          await_result=True,
          )

          When I submit who are you? in the website, the parameter min(15, len(arguments_list)) is 1. Then, I encounter this the following error:

          Traceback (most recent call last):
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
          obj = _ForkingPickler.dumps(obj)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
          cls(buf, protocol).dump(obj)
          TypeError: cannot pickle '_thread.RLock' object
          The above exception was the direct cause of the following exception:
          Traceback (most recent call last):
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
          result = await app( # type: ignore[func-returns-value]
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
          return await self.app(scope, receive, send)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in call
          await super().call(scope, receive, send)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/applications.py", line 122, in call
          await self.middleware_stack(scope, receive, send)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in call
          raise exc
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in call
          await self.app(scope, receive, _send)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in call
          raise exc
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in call
          await self.app(scope, receive, sender)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call
          raise e
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call
          await self.app(scope, receive, send)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 718, in call
          await route.handle(scope, receive, send)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
          await self.app(scope, receive, send)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
          response = await func(request)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
          raw_response = await run_endpoint_function(
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
          return await dependant.call(**values)
          File "/home/haowei/project/ControlLLM/cllm/services/pool.py", line 19, in innner_wrapper
          return await func(*args, **kwargs)
          File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 57, in tog
          output = model(request, subtasks)
          File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 46, in call
          return self.got.solve(request, subtasks, multi_processing)
          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 1105, in solve
          optimal_solutions_list = batch_exec(
          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 119, in batch_exec
          return _exec(func, arguments_list)
          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 97, in _exec
          results.append(func(*arguments))
          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 274, in solve
          results = batch_exec(
          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 121, in batch_exec
          return _async_exec(func, arguments_list, max_workers, await_result)
          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 112, in _async_exec
          results[i] = r.result()
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 451, in result
          return self.__get_result()
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
          raise self._exception
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
          obj = _ForkingPickler.dumps(obj)
          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
          cls(buf, protocol).dump(obj)
          TypeError: cannot pickle '_thread.RLock' object
          ^CINFO: Shutting down
          INFO: Waiting for application shutdown.
          INFO: Application shutdown complete.
          INFO: Finished server process [860450]
          Process finished with exit code 0

          But when I set this parameter as 0, which means:

          results = batch_exec(
          send_message,
          arguments_list,
          0,
          await_result=True,
          )

          The whole code work! So, maybe there are some bugs in this multithreading code?

          Looking forward your reply.

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Errors in multithreading #6

              Description

              @hwei-hw

              Thanks for sharing this great work!

              When I try to deploy it on my machine, I encounter one error about the multithreading in line 274 to line 279 at cllm/services/tog/tool.py:

              results = batch_exec(
              send_message,
              arguments_list,
              min(15, len(arguments_list)),
              await_result=True,
              )

              When I submit who are you? in the website, the parameter min(15, len(arguments_list)) is 1. Then, I encounter this the following error:

              Traceback (most recent call last):
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
              obj = _ForkingPickler.dumps(obj)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
              cls(buf, protocol).dump(obj)
              TypeError: cannot pickle '_thread.RLock' object
              The above exception was the direct cause of the following exception:
              Traceback (most recent call last):
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
              result = await app( # type: ignore[func-returns-value]
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
              return await self.app(scope, receive, send)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in call
              await super().call(scope, receive, send)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/applications.py", line 122, in call
              await self.middleware_stack(scope, receive, send)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in call
              raise exc
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in call
              await self.app(scope, receive, _send)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in call
              raise exc
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in call
              await self.app(scope, receive, sender)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call
              raise e
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call
              await self.app(scope, receive, send)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 718, in call
              await route.handle(scope, receive, send)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
              await self.app(scope, receive, send)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
              response = await func(request)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
              raw_response = await run_endpoint_function(
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
              return await dependant.call(**values)
              File "/home/haowei/project/ControlLLM/cllm/services/pool.py", line 19, in innner_wrapper
              return await func(*args, **kwargs)
              File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 57, in tog
              output = model(request, subtasks)
              File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 46, in call
              return self.got.solve(request, subtasks, multi_processing)
              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 1105, in solve
              optimal_solutions_list = batch_exec(
              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 119, in batch_exec
              return _exec(func, arguments_list)
              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 97, in _exec
              results.append(func(*arguments))
              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 274, in solve
              results = batch_exec(
              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 121, in batch_exec
              return _async_exec(func, arguments_list, max_workers, await_result)
              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 112, in _async_exec
              results[i] = r.result()
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 451, in result
              return self.__get_result()
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
              raise self._exception
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
              obj = _ForkingPickler.dumps(obj)
              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
              cls(buf, protocol).dump(obj)
              TypeError: cannot pickle '_thread.RLock' object
              ^CINFO: Shutting down
              INFO: Waiting for application shutdown.
              INFO: Application shutdown complete.
              INFO: Finished server process [860450]
              Process finished with exit code 0

              But when I set this parameter as 0, which means:

              results = batch_exec(
              send_message,
              arguments_list,
              0,
              await_result=True,
              )

              The whole code work! So, maybe there are some bugs in this multithreading code?

              Looking forward your reply.

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  Errors in multithreading #6

                  Description

                  @hwei-hw

                  Thanks for sharing this great work!

                  When I try to deploy it on my machine, I encounter one error about the multithreading in line 274 to line 279 at cllm/services/tog/tool.py:

                  results = batch_exec(
                  send_message,
                  arguments_list,
                  min(15, len(arguments_list)),
                  await_result=True,
                  )

                  When I submit who are you? in the website, the parameter min(15, len(arguments_list)) is 1. Then, I encounter this the following error:

                  Traceback (most recent call last):
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
                  obj = _ForkingPickler.dumps(obj)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
                  cls(buf, protocol).dump(obj)
                  TypeError: cannot pickle '_thread.RLock' object
                  The above exception was the direct cause of the following exception:
                  Traceback (most recent call last):
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
                  result = await app( # type: ignore[func-returns-value]
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
                  return await self.app(scope, receive, send)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in call
                  await super().call(scope, receive, send)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/applications.py", line 122, in call
                  await self.middleware_stack(scope, receive, send)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in call
                  raise exc
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in call
                  await self.app(scope, receive, _send)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in call
                  raise exc
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in call
                  await self.app(scope, receive, sender)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call
                  raise e
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call
                  await self.app(scope, receive, send)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 718, in call
                  await route.handle(scope, receive, send)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
                  await self.app(scope, receive, send)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
                  response = await func(request)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
                  raw_response = await run_endpoint_function(
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
                  return await dependant.call(**values)
                  File "/home/haowei/project/ControlLLM/cllm/services/pool.py", line 19, in innner_wrapper
                  return await func(*args, **kwargs)
                  File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 57, in tog
                  output = model(request, subtasks)
                  File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 46, in call
                  return self.got.solve(request, subtasks, multi_processing)
                  File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 1105, in solve
                  optimal_solutions_list = batch_exec(
                  File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 119, in batch_exec
                  return _exec(func, arguments_list)
                  File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 97, in _exec
                  results.append(func(*arguments))
                  File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 274, in solve
                  results = batch_exec(
                  File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 121, in batch_exec
                  return _async_exec(func, arguments_list, max_workers, await_result)
                  File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 112, in _async_exec
                  results[i] = r.result()
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 451, in result
                  return self.__get_result()
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
                  raise self._exception
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
                  obj = _ForkingPickler.dumps(obj)
                  File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
                  cls(buf, protocol).dump(obj)
                  TypeError: cannot pickle '_thread.RLock' object
                  ^CINFO: Shutting down
                  INFO: Waiting for application shutdown.
                  INFO: Application shutdown complete.
                  INFO: Finished server process [860450]
                  Process finished with exit code 0

                  But when I set this parameter as 0, which means:

                  results = batch_exec(
                  send_message,
                  arguments_list,
                  0,
                  await_result=True,
                  )

                  The whole code work! So, maybe there are some bugs in this multithreading code?

                  Looking forward your reply.

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      Errors in multithreading #6

                      Description

                      @hwei-hw

                      Thanks for sharing this great work!

                      When I try to deploy it on my machine, I encounter one error about the multithreading in line 274 to line 279 at cllm/services/tog/tool.py:

                      results = batch_exec(
                      send_message,
                      arguments_list,
                      min(15, len(arguments_list)),
                      await_result=True,
                      )

                      When I submit who are you? in the website, the parameter min(15, len(arguments_list)) is 1. Then, I encounter this the following error:

                      Traceback (most recent call last):
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
                      obj = _ForkingPickler.dumps(obj)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
                      cls(buf, protocol).dump(obj)
                      TypeError: cannot pickle '_thread.RLock' object
                      The above exception was the direct cause of the following exception:
                      Traceback (most recent call last):
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
                      result = await app( # type: ignore[func-returns-value]
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
                      return await self.app(scope, receive, send)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in call
                      await super().call(scope, receive, send)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/applications.py", line 122, in call
                      await self.middleware_stack(scope, receive, send)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in call
                      raise exc
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in call
                      await self.app(scope, receive, _send)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in call
                      raise exc
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in call
                      await self.app(scope, receive, sender)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call
                      raise e
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call
                      await self.app(scope, receive, send)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 718, in call
                      await route.handle(scope, receive, send)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
                      await self.app(scope, receive, send)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
                      response = await func(request)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
                      raw_response = await run_endpoint_function(
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
                      return await dependant.call(**values)
                      File "/home/haowei/project/ControlLLM/cllm/services/pool.py", line 19, in innner_wrapper
                      return await func(*args, **kwargs)
                      File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 57, in tog
                      output = model(request, subtasks)
                      File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 46, in call
                      return self.got.solve(request, subtasks, multi_processing)
                      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 1105, in solve
                      optimal_solutions_list = batch_exec(
                      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 119, in batch_exec
                      return _exec(func, arguments_list)
                      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 97, in _exec
                      results.append(func(*arguments))
                      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 274, in solve
                      results = batch_exec(
                      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 121, in batch_exec
                      return _async_exec(func, arguments_list, max_workers, await_result)
                      File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 112, in _async_exec
                      results[i] = r.result()
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 451, in result
                      return self.__get_result()
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
                      raise self._exception
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
                      obj = _ForkingPickler.dumps(obj)
                      File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
                      cls(buf, protocol).dump(obj)
                      TypeError: cannot pickle '_thread.RLock' object
                      ^CINFO: Shutting down
                      INFO: Waiting for application shutdown.
                      INFO: Application shutdown complete.
                      INFO: Finished server process [860450]
                      Process finished with exit code 0

                      But when I set this parameter as 0, which means:

                      results = batch_exec(
                      send_message,
                      arguments_list,
                      0,
                      await_result=True,
                      )

                      The whole code work! So, maybe there are some bugs in this multithreading code?

                      Looking forward your reply.

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          Errors in multithreading #6

                          Description

                          @hwei-hw

                          Thanks for sharing this great work!

                          When I try to deploy it on my machine, I encounter one error about the multithreading in line 274 to line 279 at cllm/services/tog/tool.py:

                          results = batch_exec(
                          send_message,
                          arguments_list,
                          min(15, len(arguments_list)),
                          await_result=True,
                          )

                          When I submit who are you? in the website, the parameter min(15, len(arguments_list)) is 1. Then, I encounter this the following error:

                          Traceback (most recent call last):
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
                          obj = _ForkingPickler.dumps(obj)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
                          cls(buf, protocol).dump(obj)
                          TypeError: cannot pickle '_thread.RLock' object
                          The above exception was the direct cause of the following exception:
                          Traceback (most recent call last):
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
                          result = await app( # type: ignore[func-returns-value]
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
                          return await self.app(scope, receive, send)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in call
                          await super().call(scope, receive, send)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/applications.py", line 122, in call
                          await self.middleware_stack(scope, receive, send)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in call
                          raise exc
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in call
                          await self.app(scope, receive, _send)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in call
                          raise exc
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in call
                          await self.app(scope, receive, sender)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call
                          raise e
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call
                          await self.app(scope, receive, send)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 718, in call
                          await route.handle(scope, receive, send)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
                          await self.app(scope, receive, send)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
                          response = await func(request)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
                          raw_response = await run_endpoint_function(
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
                          return await dependant.call(**values)
                          File "/home/haowei/project/ControlLLM/cllm/services/pool.py", line 19, in innner_wrapper
                          return await func(*args, **kwargs)
                          File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 57, in tog
                          output = model(request, subtasks)
                          File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 46, in call
                          return self.got.solve(request, subtasks, multi_processing)
                          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 1105, in solve
                          optimal_solutions_list = batch_exec(
                          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 119, in batch_exec
                          return _exec(func, arguments_list)
                          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 97, in _exec
                          results.append(func(*arguments))
                          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 274, in solve
                          results = batch_exec(
                          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 121, in batch_exec
                          return _async_exec(func, arguments_list, max_workers, await_result)
                          File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 112, in _async_exec
                          results[i] = r.result()
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 451, in result
                          return self.__get_result()
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
                          raise self._exception
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
                          obj = _ForkingPickler.dumps(obj)
                          File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
                          cls(buf, protocol).dump(obj)
                          TypeError: cannot pickle '_thread.RLock' object
                          ^CINFO: Shutting down
                          INFO: Waiting for application shutdown.
                          INFO: Application shutdown complete.
                          INFO: Finished server process [860450]
                          Process finished with exit code 0

                          But when I set this parameter as 0, which means:

                          results = batch_exec(
                          send_message,
                          arguments_list,
                          0,
                          await_result=True,
                          )

                          The whole code work! So, maybe there are some bugs in this multithreading code?

                          Looking forward your reply.

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              Errors in multithreading #6

                              Description

                              @hwei-hw

                              Thanks for sharing this great work!

                              When I try to deploy it on my machine, I encounter one error about the multithreading in line 274 to line 279 at cllm/services/tog/tool.py:

                              results = batch_exec(
                              send_message,
                              arguments_list,
                              min(15, len(arguments_list)),
                              await_result=True,
                              )

                              When I submit who are you? in the website, the parameter min(15, len(arguments_list)) is 1. Then, I encounter this the following error:

                              Traceback (most recent call last):
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
                              obj = _ForkingPickler.dumps(obj)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
                              cls(buf, protocol).dump(obj)
                              TypeError: cannot pickle '_thread.RLock' object
                              The above exception was the direct cause of the following exception:
                              Traceback (most recent call last):
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
                              result = await app( # type: ignore[func-returns-value]
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
                              return await self.app(scope, receive, send)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in call
                              await super().call(scope, receive, send)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/applications.py", line 122, in call
                              await self.middleware_stack(scope, receive, send)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in call
                              raise exc
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in call
                              await self.app(scope, receive, _send)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in call
                              raise exc
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in call
                              await self.app(scope, receive, sender)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call
                              raise e
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call
                              await self.app(scope, receive, send)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 718, in call
                              await route.handle(scope, receive, send)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
                              await self.app(scope, receive, send)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
                              response = await func(request)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
                              raw_response = await run_endpoint_function(
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
                              return await dependant.call(**values)
                              File "/home/haowei/project/ControlLLM/cllm/services/pool.py", line 19, in innner_wrapper
                              return await func(*args, **kwargs)
                              File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 57, in tog
                              output = model(request, subtasks)
                              File "/home/haowei/project/ControlLLM/cllm/services/tog/launch.py", line 46, in call
                              return self.got.solve(request, subtasks, multi_processing)
                              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 1105, in solve
                              optimal_solutions_list = batch_exec(
                              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 119, in batch_exec
                              return _exec(func, arguments_list)
                              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 97, in _exec
                              results.append(func(*arguments))
                              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 274, in solve
                              results = batch_exec(
                              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 121, in batch_exec
                              return _async_exec(func, arguments_list, max_workers, await_result)
                              File "/home/haowei/project/ControlLLM/cllm/services/tog/tool.py", line 112, in _async_exec
                              results[i] = r.result()
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 451, in result
                              return self.__get_result()
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
                              raise self._exception
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/queues.py", line 244, in _feed
                              obj = _ForkingPickler.dumps(obj)
                              File "/home/haowei/anaconda3/envs/cllm/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
                              cls(buf, protocol).dump(obj)
                              TypeError: cannot pickle '_thread.RLock' object
                              ^CINFO: Shutting down
                              INFO: Waiting for application shutdown.
                              INFO: Application shutdown complete.
                              INFO: Finished server process [860450]
                              Process finished with exit code 0

                              But when I set this parameter as 0, which means:

                              results = batch_exec(
                              send_message,
                              arguments_list,
                              0,
                              await_result=True,
                              )

                              The whole code work! So, maybe there are some bugs in this multithreading code?

                              Looking forward your reply.

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions