]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add (presently) failing test case for bz#254164.
authorRhys Kidd <rhyskidd@gmail.com>
Sun, 10 May 2015 13:34:22 +0000 (13:34 +0000)
committerRhys Kidd <rhyskidd@gmail.com>
Sun, 10 May 2015 13:34:22 +0000 (13:34 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15205

none/tests/darwin/Makefile.am
none/tests/darwin/bug254164.c [new file with mode: 0644]
none/tests/darwin/bug254164.stderr.exp [new file with mode: 0644]
none/tests/darwin/bug254164.vgtest [new file with mode: 0644]

index 391fb59996beac2def80db0f66993f544578e45e..5cce00cdfdfab89dfc8c692ddc14cdd32bb775f0 100644 (file)
@@ -6,11 +6,13 @@ dist_noinst_SCRIPTS = filter_stderr
 EXTRA_DIST = \
        access_extended.stderr.exp access_extended.vgtest \
        apple-main-arg.stderr.exp apple-main-arg.vgtest \
+       bug254164.stderr.exp bug254164.vgtest \
        rlimit.stderr.exp rlimit.vgtest
 
 check_PROGRAMS = \
        access_extended \
        apple-main-arg \
+       bug254164 \
        rlimit
 
 
diff --git a/none/tests/darwin/bug254164.c b/none/tests/darwin/bug254164.c
new file mode 100644 (file)
index 0000000..9bb4927
--- /dev/null
@@ -0,0 +1,61 @@
+// Small test program to demonstrate Valgrind bug.
+// https://bugs.kde.org/show_bug.cgi?id=254164
+
+
+#include <stdio.h>
+#include <sys/resource.h>
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <mach/task.h>
+#include <mach/mach_init.h>
+
+void getres(task_t task, unsigned int *rss, unsigned int *vs)
+{
+    struct task_basic_info t_info;
+    mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
+    
+    task_info(task, TASK_BASIC_INFO, (task_info_t)&t_info, &t_info_count);
+    *rss = t_info.resident_size;
+    *vs = t_info.virtual_size;
+}
+
+/** It appears task_set_info() is a deprecated interface on modern Darwin
+  * Per comments in osfmk/kern/task.c:
+  *
+  *   This routine was added, pretty much exclusively, for registering the
+  *   RPC glue vector for in-kernel short circuited tasks. Rather than
+  *   removing it completely, I have only disabled that feature (which was
+  *   the only feature at the time).
+  */
+/**
+void setres(task_t task)
+{
+    struct task_trace_memory_info t_info;
+    mach_msg_type_number_t t_info_count = TASK_TRACE_MEMORY_INFO_COUNT;
+    t_info.user_memory_address = NULL;
+    t_info.buffer_size = 0;
+    t_info.mailbox_array_size = 0;
+    
+    task_set_info(task, TASK_TRACE_MEMORY_INFO, (task_info_t)&t_info, &t_info_count);
+}
+ */
+
+int main(void)
+{
+    unsigned int rss, vs;
+    task_t task = MACH_PORT_NULL;
+    
+    if (task_for_pid(current_task(), getpid(), &task) != KERN_SUCCESS)
+        abort();
+    
+    getres(task, &rss, &vs);
+    //setres(task);
+    
+    return 0;
+}
+
diff --git a/none/tests/darwin/bug254164.stderr.exp b/none/tests/darwin/bug254164.stderr.exp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/none/tests/darwin/bug254164.vgtest b/none/tests/darwin/bug254164.vgtest
new file mode 100644 (file)
index 0000000..fa68f34
--- /dev/null
@@ -0,0 +1,2 @@
+prog: bug254164
+vgopts: -q