1"use strict";(self.webpackChunktms=self.webpackChunktms||[]).push([["8468"],{9033(e,i,t){t.r(i),t.d(i,{metadata:()=>n,default:()=>d,frontMatter:()=>r,contentTitle:()=>a,toc:()=>h,assets:()=>l});var n=JSON.parse('{"id":"TMS/troubleshooting/too-many-file-descriptors","title":"Chrome crashes on Linux with many tabs (file descriptor limit)","description":"Why keeping hundreds of tabs open with TMS can hit Linux\'s default 1024 file-descriptor limit, and how to raise it.","source":"@site/docs/TMS/troubleshooting/too-many-file-descriptors.md","sourceDirName":"TMS/troubleshooting","slug":"/TMS/troubleshooting/too-many-file-descriptors","permalink":"/docs/TMS/troubleshooting/too-many-file-descriptors","draft":false,"unlisted":false,"tags":[{"inline":true,"label":"TMS","permalink":"/docs/tags/tms"},{"inline":true,"label":"The Marvellous Suspender","permalink":"/docs/tags/the-marvellous-suspender"},{"inline":true,"label":"Linux","permalink":"/docs/tags/linux"},{"inline":true,"label":"Debian","permalink":"/docs/tags/debian"},{"inline":true,"label":"troubleshooting","permalink":"/docs/tags/troubleshooting"}],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2,"title":"Chrome crashes on Linux with many tabs (file descriptor limit)","sidebar_label":"File descriptor limit (Linux)","de
1scription":"Why keeping hundreds of tabs open with TMS can hit Linux\'s default 1024 file-descriptor limit, and how to raise it.","tags":["TMS","The Marvellous Suspender","Linux","Debian","troubleshooting"]},"sidebar":"mainSidebar","previous":{"title":"Extension corruption & repair","permalink":"/docs/TMS/troubleshooting/extension-repair-recovery"},"next":{"title":"Help test a fix","permalink":"/docs/TMS/troubleshooting/help-test-a-fix"}}'),o=t(4848),s=t(8453);let r={sidebar_position:2,title:"Chrome crashes on Linux with many tabs (file descriptor limit)",sidebar_label:"File descriptor limit (Linux)",description:"Why keeping hundreds of tabs open with TMS can hit Linux's default 1024 file-descriptor limit, and how to raise it.",tags:["TMS","The Marvellous Suspender","Linux","Debian","troubleshooting"]},a="Chrome crashes on Linux with many tabs (file descriptor limit)",l={},h=[{value:"Why TMS can't detect this for you",id:"why-tms-cant-detect-this-for-you",level:2},{value:"How to raise the limit",id:"how-to-raise-the-limit",level:2},{value:"See also",id:"see-also",level:2}];function c(e){let i={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.header,{children:(0,o.jsx)(i.h1,{id:"chrome-crashes-on-linux-with-many-tabs-file-descriptor-limit",children:"Chrome crashes on Linux with many tabs (file descriptor limit)"})}),"\n",(0,o.jsxs)(i.p,{children:["Most Linux distributions, Debian included, ship with a default ",(0,o.jsx)(i.strong,{children:"soft limit of 1024 open file descriptors per process"}),". Every open tab (and every process Chrome spins up for it) uses some of that budget. If you keep a very large number of tabs open at once, hitting that ceiling can cause Chrome to fail to open new tabs, or crash outright, with no clear error pointing at the actual cause."]}),"\n",(0,o.jsx)(i.p,{children:"This isn't a TMS bug, and it isn't specific to TMS either, any Chromium-based browser can hit it with enough tabs open. But TMS's whole point is letting you keep far more tabs open than you normally would (suspended tabs use a fraction of the memory of a live one), so people using it are more likely to actually reach a tab count high enough to hit this OS-level ceiling than people who don't."}),"\n",(0,o.jsx)(i.h2,{id:"why-tms-cant-detect-this-for-you",children:"Why TMS can't detect this for you"}),"\n",(0,o.jsx)(i.p,{children:"There's no browser extension API that exposes the current file-descriptor count or the OS's ulimit setting, Chrome only discovers the problem itself when it fails to open a new tab, by which point it's too late to warn ahead of time. This means TMS has no reliable way to check for this in advance or work around it from inside the extension sandbox."}),"\n",(0,o.jsx)(i.h2,{id:"how-to-raise-the-limit",children:"How to raise the limit"}),"\n",(0,o.jsx)(i.p,{children:"Check your current limits:"}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-bash",children:"ulimit -n\n"})}),"\n",(0,o.jsxs)(i.p,{children:["If it reports ",(0,o.jsx)(i.code,{children:"1024"}),", you can raise it for your current session:"]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-bash",children:"ulimit -n 4096\n"})}),"\n",(0,o.jsxs)(i.p,{children:["For a permanent change, add a line like this to ",(0,o.jsx)(i.code,{children:"/etc/security/limits.conf"})," (requires root):"]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{children:"your-username soft nofile 4096\nyour-username hard nofile 8192\n"})}),"\n",(0,o.jsxs)(i.p,{children:["Then log out and back in for it to take effect. Some desktop environments/display managers also need ",(0,o.jsx)(i.code,{children:"session required pam_limits.so"})," enabled in ",(0,o.jsx)(i.code,{children:"/etc/pam.d/common-session"})," for the ",(0,o.jsx)(i.code,{children:"limits.conf"})," change to apply to graphical sessions, not just terminal logins, check your distribution's documentation if the change doesn't seem to stick."]}),"\n",(0,o.jsx)(i.h2,{id:"see-also",children:"See also"}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsx)(i.li,{children:(0,o.jsx)(i.a,{href:"https://github.com/gioxx/MarvellousSuspender/issues/510",children:"Reported in issue #510"})}),"\n"]})]})}function d(e={}){let{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,o.jsx)(i,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},8453(e,i,t){t.d(i,{R:()=>r,x:()=>a});var n=t(6540);let o={},s=n.createContext(o);function r(e){let i=n.useContext(s);return n.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(s.Provider,{value:i},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.