It's indeed the bump of vm.mmap_rnd_bits from 28 to 32, which is part of
the changelog in https://launchpad.net/ubuntu/+source/linux/6.5.0-25.25
:

  * test_021_aslr_dapper_libs from ubuntu_qrt_kernel_security failed on K-5.19 /
    J-OEM-6.1 / J-6.2 AMD64 (LP: #1983357)
    - [Config]: set ARCH_MMAP_RND_{COMPAT_, }BITS to the maximum

On my amd64 6.5.0-21-generic machines, the default value is:

vm.mmap_rnd_bits = 28

while on 6.5.0-25-generic, it is:

vm.mmap_rnd_bits = 32

Forcing vm.mmap_rnd_bits back to 28 on 6.5.0-25-generic makes
ThreadSanitizer work again.

I'm unsure if this bug should be kept open now, since it is maybe
expected that some user space programs break due to the changed
randomization settings?

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/2056762

Title:
  ThreadSanitizer: unexpected memory mapping with 6.5.0-25.25~22.04.1

Status in linux package in Ubuntu:
  New
Status in linux source package in Mantic:
  New

Bug description:
  We updated a number of (amd64) machines from linux-
  image-6.5.0-21-generic (6.5.0-21.21~22.04.1) to linux-
  image-6.5.0-25-generic (6.5.0-25.25~22.04.1), and this caused
  ThreadSanitizer-instrumented programs to immediately exit with an
  error similar to:

  FATAL: ThreadSanitizer: unexpected memory mapping
  0x5c4dc2bcd000-0x5c4dc2bed000

  Reverting the kernel back to 6.5.0-21.21~22.04.1 and rebooting makes
  the same executables work again.

  There are a few older bugs including
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67308 and
  https://github.com/google/sanitizers/issues/503 but these are from
  ~2015, and about gcc 7 and linux 4.1 so it does not seem to be the
  same problem.

  A very small program, lifted from
  https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual can
  be used to show the problem:

  $ cat simple-race.c
  #include <pthread.h>
  #include <stdio.h>

  int Global;

  void *Thread1(void *x) {
    Global++;
    return NULL;
  }

  void *Thread2(void *x) {
    Global--;
    return NULL;
  }

  int main() {
    pthread_t t[2];
    pthread_create(&t[0], NULL, Thread1, NULL);
    pthread_create(&t[1], NULL, Thread2, NULL);
    pthread_join(t[0], NULL);
    pthread_join(t[1], NULL);
  }

  $ cc -fsanitize=thread -fPIE -pie -g simple-race.c -o simple-race

  $ ./simple-race
  FATAL: ThreadSanitizer: unexpected memory mapping 
0x5d161227c000-0x5d161227d000

  $ uname -a
  Linux buildhost 6.5.0-25-generic #25~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue 
Feb 20 16:09:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

  When running that exact same binary, on the same machine, but with
  linux 6.5.0-21:

  $ ./simple-race
  ==================
  WARNING: ThreadSanitizer: data race (pid=19373)
    Read of size 4 at 0x560964a2d014 by thread T2:
      #0 Thread2 /home/lxc-unpriv/simple-race.c:12 (simple-race+0x12d1)

    Previous write of size 4 at 0x560964a2d014 by thread T1:
      #0 Thread1 /home/lxc-unpriv/simple-race.c:7 (simple-race+0x128c)

    Location is global 'Global' of size 4 at 0x560964a2d014 (simple-
  race+0x000000004014)

    Thread T2 (tid=19376, running) created by main thread at:
      #0 pthread_create 
../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 
(libtsan.so.0+0x605b8)
      #1 main /home/lxc-unpriv/simple-race.c:19 (simple-race+0x1368)

    Thread T1 (tid=19375, finished) created by main thread at:
      #0 pthread_create 
../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 
(libtsan.so.0+0x605b8)
      #1 main /home/lxc-unpriv/simple-race.c:18 (simple-race+0x1347)

  SUMMARY: ThreadSanitizer: data race /home/lxc-unpriv/simple-race.c:12 in 
Thread2
  ==================
  ThreadSanitizer: reported 1 warnings

  $ uname -a
  Linux buildhost 6.5.0-21-generic #21~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri 
Feb  9 13:32:52 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2056762/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to