Changeset: 5495166fbc3c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5495166fbc3c
Modified Files:
        gdk/gdk_utils.c
Branch: Jun2020
Log Message:

Try harder to find a cgroup v1 control file.
This should fix bug 6882.


diffs (91 lines):

diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -413,7 +413,7 @@ MT_init(void)
                                cgr = cgr2;
                        else
                                continue;
-                       /* buf point at mount ID */
+                       /* buf points at mount ID */
                        p = strchr(buf, ' ');
                        if (p == NULL)
                                break;
@@ -469,13 +469,14 @@ MT_init(void)
                        bool success = false; /* true if we can open any file */
                        FILE *f;
                        uint64_t mem;
-                       size_t l;
 
                        p = strchr(buf, '\n');
                        if (p == NULL)
                                break;
                        *p = 0;
                        if (strncmp(buf, "0::", 3) == 0) {
+                               size_t l;
+
                                /* cgroup v2 entry */
                                l = strconcat_len(pth, sizeof(pth),
                                                  cgr2, buf + 3, "/", NULL);
@@ -525,11 +526,19 @@ MT_init(void)
                                *p++ = 0;
                                if (strstr(q, "memory") == NULL)
                                        continue;
-                               l = strconcat_len(pth, sizeof(pth),
-                                                 cgr1, p, "/", NULL);
                                /* limit of memory usage */
-                               strcpy(pth + l, "memory.limit_in_bytes");
+                               strconcat_len(pth, sizeof(pth),
+                                             cgr1, p,
+                                             "/memory.limit_in_bytes",
+                                             NULL);
                                f = fopen(pth, "r");
+                               if (f == NULL) {
+                                       strconcat_len(pth, sizeof(pth),
+                                                     cgr1,
+                                                     "/memory.limit_in_bytes",
+                                                     NULL);
+                                       f = fopen(pth, "r");
+                               }
                                if (f != NULL) {
                                        if (fscanf(f, "%" SCNu64, &mem) == 1
                                            && mem < (uint64_t) _MT_pagesize * 
_MT_npages) {
@@ -539,8 +548,18 @@ MT_init(void)
                                        fclose(f);
                                }
                                /* soft limit of memory usage */
-                               strcpy(pth + l, "memory.soft_limit_in_bytes");
+                               strconcat_len(pth, sizeof(pth),
+                                             cgr1, p,
+                                             "/memory.soft_limit_in_bytes",
+                                             NULL);
                                f = fopen(pth, "r");
+                               if (f == NULL) {
+                                       strconcat_len(pth, sizeof(pth),
+                                                     cgr1,
+                                                     
"/memory.soft_limit_in_bytes",
+                                                     NULL);
+                                       f = fopen(pth, "r");
+                               }
                                if (f != NULL) {
                                        if (fscanf(f, "%" SCNu64, &mem) == 1
                                            && mem < (uint64_t) _MT_pagesize * 
_MT_npages) {
@@ -551,8 +570,18 @@ MT_init(void)
                                }
                                /* limit of memory+swap usage
                                 * we use this as maximum virtual memory size */
-                               strcpy(pth + l, "memory.memsw.limit_in_bytes");
+                               strconcat_len(pth, sizeof(pth),
+                                             cgr1, p,
+                                             "/memory.memsw.limit_in_bytes",
+                                             NULL);
                                f = fopen(pth, "r");
+                               if (f == NULL) {
+                                       strconcat_len(pth, sizeof(pth),
+                                                     cgr1,
+                                                     
"/memory.memsw.limit_in_bytes",
+                                                     NULL);
+                                       f = fopen(pth, "r");
+                               }
                                if (f != NULL) {
                                        if (fscanf(f, "%" SCNu64, &mem) == 1
                                            && mem < (uint64_t) GDK_vm_maxsize) 
{
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to