{"id":22103,"date":"2026-11-11T11:30:00","date_gmt":"2026-11-11T10:30:00","guid":{"rendered":"https:\/\/webhosting.de\/?p=22103"},"modified":"2026-11-05T08:25:52","modified_gmt":"2026-11-05T07:25:52","slug":"kernel-memory-leak-detection-kmemleak","status":"publish","type":"post","link":"https:\/\/webhosting.de\/en\/kernel-memory-leak-detection-kmemleak\/","title":{"rendered":"Detecting and Investigating Kernel Memory Leaks with kmemleak"},"content":{"rendered":"<div class=\"wh-article\" data-wh-layout=\"2.1.2\" style=\"width:100%;max-width:820px;margin:0 auto;color:#263b4b;font-family:inherit;font-size:18px;line-height:1.8;text-align:start;overflow-wrap:break-word;box-sizing:border-box\"><p class=\"wh-lead\" style=\"font-size:20px;line-height:1.7;color:#233746;margin:0 0 1.1em\">With kmemleak, you can search the Linux kernel for memory objects that may no longer be accessible. A match is a <strong style=\"font-weight:700;color:inherit\">Suspected case<\/strong>, no confirmed leak; an empty output does not rule out errors either. For a robust investigation, first document the initial findings, run a limited sequence of operations on an approved test system, and compare the results after a scan. Then, check the code to determine who owns the object and who should authorize it. <\/p>\n<nav class=\"wh-toc\" aria-label=\"Contents of this article\" style=\"display:block;margin:28px 0 38px;padding:22px;border:1px solid #d9e4e8;border-radius:14px;background:#f4f8f8\"><p class=\"wh-toc-title\" style=\"font-size:13px;font-weight:700;letter-spacing:.08em;color:#49656b;margin:0 0 14px\">Go directly to the section<\/p><div class=\"wh-toc-grid\" style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px\"><div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#kmemleak-grundlagen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">What kmemleak detects in the kernel<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#grenzen-fehlalarme\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Why Reports Remain Suspected Cases<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#testumgebung-voraussetzungen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Check the test environment and prerequisites<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#schnittstelle-befehle\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Interface and Diagnostic Commands<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#reproduzierbarer-ablauf\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Reproducibly Narrow Down Suspected Cases<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#modultest-befund\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Module Testing and Analysis of Results<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#ursache-und-annotation\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Check the cause instead of hiding the message<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#betrieb-fehlersuche\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Troubleshooting and Safe Operation<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#werkzeugwahl-naechste-schritte\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Choosing the Right Diagnostic Tool<\/a><\/div>\n<\/div><\/nav><section class=\"wh-section\" aria-labelledby=\"kmemleak-grundlagen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"kmemleak-grundlagen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">What kmemleak detects in the kernel<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">Kmemleak<\/strong> Supports Linux kernel debugging by searching for potentially orphaned memory objects. To do this, it tracks supported allocations and checks whether references to these objects can be identified in the scanned memory regions. An object that is not recognized as accessible is flagged as a potential leak, not as a conclusively proven error. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Imagine that a kernel module reserves an object and then loses the last reference to it without freeing the memory. If kmemleak finds, during its <strong style=\"font-weight:700;color:inherit\">Reference Search<\/strong> If there are no longer any references to the object, it can flag it as suspicious. The report provides a starting point for investigating the object's allocation and intended lifecycle in the code. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The process is similar to a garbage collector's reachability search, but it does not perform the cleanup: Kmemleak does not free reported objects and does not fix the code. Whether an object is actually lost must be determined based on its usage, ownership, and the intended release process. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A kernel leak involves memory managed by the kernel code or a module. A leak in a PHP service or another user-space process is a different class of error; kmemleak does not examine its heap. For the broader <a href=\"https:\/\/webhosting.de\/en\/memory-leak-detection-server-stability-hosting-monitoring-detection\/\">Memory Leak Detection in Hosting Operations<\/a> Therefore, process data and other diagnostic tools are also worth considering.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Rising RAM usage alone does not prove a <strong style=\"font-weight:700;color:inherit\">Memory Leak<\/strong> nor its location. Changes in the scope of work or data retained for longer periods can also affect the requirements. A sensible starting point, therefore, is a process that can be delimited in terms of time and function, allowing a suspected kernel issue to be investigated in a targeted manner.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"grenzen-fehlalarme\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"grenzen-fehlalarme\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Why Reports Remain Suspected Cases<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The search for pointer values cannot detect every meaning that a program assigns to a reference. If a valid reference lies outside the scanned ranges or is stored in a way that kmemleak cannot detect it, an object that is still needed may appear to be orphaned. This is a possible <strong style=\"font-weight:700;color:inherit\">False alarm<\/strong>: The message alone does not prove that authorization is lacking. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The opposite is also possible. A numeric value may happen to look like a pointer to an object, even though the code does not use it as a reference. Kmemleak may then classify the object as reachable and overlook an actual leak. An empty output is therefore not proof that the code under examination is error-free. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Added to this is the scope of the allocations being tracked: direct page allocations and <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">ioremap<\/code> According to the kernel documentation, these are not tracked. Anyone who suspects a memory increase in these areas cannot conclude from an unremarkable kmemleak report that the cause in question has been ruled out. A different type of investigation is required for that. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The <strong style=\"font-weight:700;color:inherit\">Accessibility<\/strong> It is therefore a technical heuristic and not a complete semantic analysis of the program. It does not reliably determine whether a detected reference is used appropriately or whether an overlooked reference is actually missing. A single finding constitutes a test case; the absence of findings merely limits the conclusions that can be drawn from the respective scan. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">To evaluate the issue, it is worth recreating the suspected behavior under controlled conditions and then examining the corresponding code path. In particular, it is necessary to determine who owns the object and when it should be released. Only this investigation can provide a plausible explanation for the findings.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"testumgebung-voraussetzungen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"testumgebung-voraussetzungen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Check the test environment and prerequisites<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The versioned documentation for Linux 6.6 serves as the technical basis here. However, whether kmemleak is actually available on your system depends on the kernel build you are using and its configuration, not solely on the version number. Therefore, check the specific distribution kernel that is installed and make a note of the build and configuration for later analysis. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">One prerequisite is the compiled-in kernel option <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">CONFIG_DEBUG_KMEMLEAK<\/code>. Separate from that is the <strong style=\"font-weight:700;color:inherit\">Runtime Activation<\/strong>: Is the kernel configured with <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF<\/code> Once configured, the boot parameter <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">kmemleak=on<\/code> may be necessary. Be sure to plan for changes to the boot process specifically for the approved test configuration. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">To access the diagnostic interface, you must also <strong style=\"font-weight:700;color:inherit\">debugfs<\/strong> be available and properly integrated. Kernel configuration, activation, and file system access are different points of inspection: A missing interface alone does not reveal which of these is the cause. Privileged rights may be required for access. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If possible, use an isolated VM or a dedicated test system, and obtain approval for changes in advance. Kmemleak causes additional overhead during allocation and deallocation; the impact depends on the environment and workload. Without appropriate measurements, it is not possible to specify a universal performance penalty. <\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail1\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-testumgebung-rechner-000095df-detail1-d5ad12cc93-1024x683.webp\" class=\"wp-image-22110\" alt=\"An AI-generated stock image of a small computer on a workbench serving as a dedicated kernel test system.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-testumgebung-rechner-000095df-detail1-d5ad12cc93-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-testumgebung-rechner-000095df-detail1-d5ad12cc93-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-testumgebung-rechner-000095df-detail1-d5ad12cc93-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-testumgebung-rechner-000095df-detail1-d5ad12cc93-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-testumgebung-rechner-000095df-detail1-d5ad12cc93.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail1\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">AI-generated stock image: A dedicated testing system provides a defined framework for diagnosis.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">In addition to the kernel, document the module under investigation, the planned sequence of events, and the time of the output. Diagnostic reports may contain internal addresses and other sensitive information. Store them in a secure, restricted-access location, and before sharing them, verify which details are actually needed for the error analysis.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"schnittstelle-befehle\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"schnittstelle-befehle\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Interface and Diagnostic Commands<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">On the shared test system, start by accessing <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">\/sys\/kernel\/debug\/kmemleak<\/code>. The file shows currently reported suspected cases. Access may require privileged rights; an empty output merely describes the visible diagnostic state and does not prove that the kernel is free of memory leaks. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Run the following command in a shell with sufficient read permissions. It does not change the diagnostic status and is also useful for saving an initial assessment before taking further steps.<\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Terminal<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-bash\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">cat \/sys\/kernel\/debug\/kmemleak<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If the file is missing, there are three possible causes: The kernel may have been compiled without <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">CONFIG_DEBUG_KMEMLEAK<\/code> Built, kmemleak is not enabled at runtime, or debugfs is not mounted in the expected location. The missing file alone does not indicate which of these is the case. Therefore, check the build configuration, boot configuration, and mount point separately. <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Calls to the kmemleak interface\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Calls to the kmemleak interface<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Access<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Purpose<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Phase Change and Caution<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">cat \/sys\/kernel\/debug\/kmemleak<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Read about apparent cases of suspicion<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Reading; Output may contain sensitive diagnostic data.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">echo scan &gt; \/sys\/kernel\/debug\/kmemleak<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Start a scan<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Write access; can modify the visible list of findings.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">echo clear &gt; \/sys\/kernel\/debug\/kmemleak<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Remove current alerts from the visible list of suspected cases<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Write access; save findings first; memory will not be released.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The table deliberately distinguishes between reading and <strong style=\"font-weight:700;color:inherit\">Write access<\/strong>: Running a scan and cleaning up the visible list changes the diagnostic status. Mounting `debugfs`, if necessary, also alters the system. Perform such steps only with authorization and the necessary permissions; redirecting write commands also requires sufficient permissions. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"reproduzierbarer-ablauf\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"reproduzierbarer-ablauf\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Reproducibly Narrow Down Suspected Cases<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">First, save the complete output of the interface along with the timestamp, kernel build, and test configuration. Any existing messages are part of the <strong style=\"font-weight:700;color:inherit\">Initial Findings<\/strong> and must not be attributed to the following test without comparison. Keep the output in a secure place, as it may contain internal addresses and other diagnostic information. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">On a shared test system, you can then remove the currently visible messages from the suspect list using the following shell command. The shell requires write access to the interface. The command does not free up memory blocks or resolve the underlying cause; without a prior backup, important information may be lost. <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Terminal<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-bash\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">echo clear &gt; \/sys\/kernel\/debug\/kmemleak<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Next, initiate a procedure that is as narrowly defined and well-documented as possible\u2014such as initializing and performing a controlled cleanup of a module under investigation. Record which steps were performed and when they were completed. This allows any findings discovered later to be compared more specifically with the procedure, without the mere temporal proximity proving a causal relationship on its own.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">After the timer expires, trigger a scan in an appropriately authorized shell, and then read the interface again. Both commands require that kmemleak be active and that the debugfs interface be available. <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Terminal<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-bash\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">echo scan &gt; \/sys\/kernel\/debug\/kmemleak\ncat \/sys\/kernel\/debug\/kmemleak<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Repeat the process systematically and allow sufficient time. A scan does not necessarily have to yield reproducible results immediately. For regression testing, compare the same test before and after the code change, keeping the kernel configuration and load as consistent as possible; document any remaining differences. A new suspicion supports a hypothesis but does not replace testing the object\u2019s lifecycle. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"modultest-befund\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"modultest-befund\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Module Testing and Analysis of Results<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">During a module test, for example, you can execute an initialization path and then run through the intended cleanup path. If a new entry appears afterward, first note the object\u2019s size, age, and process context, as well as the associated test steps. This information helps in assigning findings; on its own, it does not yet indicate whether the object should actually have been released. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The <strong style=\"font-weight:700;color:inherit\">Allocation Stack Trace<\/strong> leads to the point where memory was allocated. From there, you can trace through the code to see who takes ownership of the object and which path is supposed to free it. The trace does not necessarily have to include the point where the object was not freed: allocation and failure to free the object can occur in different functions. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Also consider the <strong style=\"font-weight:700;color:inherit\">Allocation Order<\/strong>: The documentation describes the output in this order. An earlier orphaned object may trigger additional messages. Therefore, check whether multiple entries belong to the same object group or error path before counting them as separate defects. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For an optional functional test, the current kernel documentation describes the module <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">kmemleak-test<\/code>, which intentionally creates memory leaks. Use it only in an isolated test environment, and check beforehand to see if it is available in the specific kernel and configured accordingly. The current documentation does not guarantee its availability for every older or distribution-specific kernel. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Even with this diagnostic module, an immediate notification or a match on the first scan is not guaranteed. Record the time of the test and the scan sequence, and repeat the test in a controlled manner. If the output remains empty at first, check the prerequisites and the procedure instead of concluding solely that the diagnostic environment is either functioning or defective. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"ursache-und-annotation\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"ursache-und-annotation\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Check the cause instead of hiding the message<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">When dealing with a suspected issue, start by examining the lifecycle of the reported object: Which function reserves it, who subsequently takes responsibility for it, and when should it be released? The allocation stack trace leads you to the source of the reservation. Whether an error lies there or at a later point can only be determined by examining the code path. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Be sure to check the <strong style=\"font-weight:700;color:inherit\">Ownership Structure<\/strong> during handoffs between functions and modules. When a reference is passed on, it must be clear which side retains it and which side performs the release. Also, compare the normal cleanup path with termination and error paths\u2014for example, when an initialization is only partially completed.<\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail2\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-objektlebenszyklus-000095df-detail2-cd73c4fac6-1024x683.webp\" class=\"wp-image-22111\" alt=\"AI-generated illustration of interconnected shapes and a broken line, symbolizing a reference to be verified.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-objektlebenszyklus-000095df-detail2-cd73c4fac6-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-objektlebenszyklus-000095df-detail2-cd73c4fac6-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-objektlebenszyklus-000095df-detail2-cd73c4fac6-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-objektlebenszyklus-000095df-detail2-cd73c4fac6-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/kmemleak-objektlebenszyklus-000095df-detail2-cd73c4fac6.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail2\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">AI-generated illustration: The object lifecycle check determines whether a reference was actually lost.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">An error message may also appear even though a valid reference exists that kmemleak does not recognize. Before you suppress it, check where and in what form the pointer is stored. Document why the object remains accessible during its intended lifetime and how it is eventually released. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For verified special cases, developers have <strong style=\"font-weight:700;color:inherit\">Annotations<\/strong> Available: <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">kmemleak_not_leak<\/code> marks a known object as not being a leak, but continues to scan it for references. <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">kmemleak_ignore<\/code> Excludes the object from both the report and the scan. As a result, references contained within it may be missing from the analysis. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Check the availability and semantics of the API in the kernel actually in use; the current API documentation does not automatically guarantee compatibility with every older build. An annotation does not resolve a missing authorization or an incorrect ownership change. Therefore, do not use it solely to make disruptive output disappear. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"betrieb-fehlersuche\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"betrieb-fehlersuche\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Troubleshooting and Safe Operation<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If the file is missing <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">\/sys\/kernel\/debug\/kmemleak<\/code>, first check the kernel build that was actually started and its configuration. <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">CONFIG_DEBUG_KMEMLEAK<\/code> must be available; the version number of a distribution alone is not sufficient. Record the build and configuration so that future comparisons are based on the same criteria. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Separately, check the <strong style=\"font-weight:700;color:inherit\">Runtime Activation<\/strong> and the inclusion of debugfs. In <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF<\/code> the boot parameter can <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">kmemleak=on<\/code> may be required. A missing file does not distinguish between these possible causes on its own; changes to the boot process or mounting debugfs should be part of an approved test configuration. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If the output is empty after a test, check whether the process under investigation was actually executed and whether there was sufficient time between the process and the scan. Repeat the test under documented conditions and compare the results with the saved initial findings. Even then, an empty report has its limitations: kmemleak does not detect every allocation or every relevant reference.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Back up existing findings before making any changes to the diagnostic status. The output may contain internal addresses and other sensitive information; handle it in accordance with your environment\u2019s access and disclosure policies. Preferably, perform state-changing steps on an isolated, approved test system, and take into account the additional diagnostic effort without assuming an unspecified percentage. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">High memory requirements or <strong style=\"font-weight:700;color:inherit\">Memory Pressure<\/strong> is a standalone operational issue and, in and of itself, does not constitute evidence of a kernel leak. The article on [...], helps in classifying wait times and memory shortages. <a href=\"https:\/\/webhosting.de\/en\/memory-pressure-linux-kernel-hosting-systems-optimization-ram\/\">Memory Pressure in the Linux Kernel<\/a>. Combine such operational observations with a targeted review of the code and findings, rather than drawing immediate conclusions about the cause based solely on a RAM curve.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"werkzeugwahl-naechste-schritte\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"werkzeugwahl-naechste-schritte\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Choosing the Right Diagnostic Tool<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Choose the tool based on the presumed <strong style=\"font-weight:700;color:inherit\">Error Class<\/strong>, not solely based on the general symptom of increasing memory usage. kmemleak searches for potentially orphaned, supported kernel objects. For invalid accesses or memory issues in a user process, a different set of tools is more appropriate; these tools address different issues.  <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Diagnostic Tools by Application Area and Problem\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Diagnostic Tools by Application Area and Problem<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Tool<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Field of application<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Typical Questions<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">kmemleak<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Linux kernel<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Are tracked objects possibly no longer referenced?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">KAZAN<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Linux kernel<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Do invalid memory accesses, such as out-of-bounds or use-after-free, occur?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">KFENCE<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Linux kernel<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Do certain memory errors occur with different instrumentation?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Valgrind Memcheck<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">User space<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Are there any memory errors or potential leaks in a user program?<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A suspected lost kernel reference initially points to a kmemleak. If, on the other hand, an error pattern indicates an access outside an object or to memory that has already been freed, KASAN is suitable for investigating this class of errors. KFENCE also tracks certain memory errors but uses a different instrumentation approach; its availability and suitability depend on the specific kernel and the test environment. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If a user-space process is suspected, examine its memory using a tool designed for that purpose, such as Valgrind Memcheck. A kmemleak report on kernel objects is no substitute for an analysis of an application\u2019s heap. Conversely, a warning from a user-space process does not automatically indicate whether a kernel module is leaking memory.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">To continue, select one <strong style=\"font-weight:700;color:inherit\">reproducible test<\/strong> and document the kernel build, configuration, and execution. Examine the reported object lifecycle in the code, correct any identified cause, and repeat the same process under conditions that are as similar as possible. Compare the results again; the absence of a report alone does not prove that the system is completely error-free. <\/p>\n<\/section><section class=\"wh-sources\" style=\"margin:40px 0 0;padding:24px 0 0;border-top:1px solid #dce5e9;color:#596b7b;font-size:14px;line-height:1.65\"><h2 style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Sources and Current State of Knowledge<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Status of the research: <time datetime=\"2026-11-04\">2026-11-04<\/time><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The technical basis for this information is the Linux 6.6 documentation. Any additions from the current documentation and API availability must be verified against the kernel actually in use; research status: November 4, 2026.<\/p><div class=\"wh-source-urls\"><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/kernel.org\/doc\/html\/v6.6\/dev-tools\/kmemleak.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/www.kernel.org\/doc\/html\/latest\/dev-tools\/kmemleak.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/cdn.kernel.org\/doc\/html\/latest\/core-api\/mm-api.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/cdn.kernel.org\/doc\/html\/latest\/dev-tools\/testing-overview.html<\/span><\/p><\/div><\/section><\/div>","protected":false},"excerpt":{"rendered":"<p>kmemleak may detect orphaned memory objects in the Linux kernel. Learn how to set up a test environment, perform reproducible scans, and rule out suspected false positives.<\/p>","protected":false},"author":1,"featured_media":22109,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[922],"tags":[],"class_list":["post-22103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie"],"acf":[],"_links":{"self":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/comments?post=22103"}],"version-history":[{"count":2,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22103\/revisions"}],"predecessor-version":[{"id":22112,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22103\/revisions\/22112"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/media\/22109"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/media?parent=22103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/categories?post=22103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/tags?post=22103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}