this post was submitted on 11 Oct 2023
8 points (78.6% liked)

Programming

17313 readers
259 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

I'm trying to build iwlwifi module manually and for my needs.

https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes.git/tree/net/wireless/

When I run Makefile as make, I get:

subcmd-util.h: In function ‘xrealloc’:
subcmd-util.h:58:31: error: pointer ‘ptr’ may be used after ‘realloc’ [-Werror=use-after-free]
   58 |                         ret = realloc(ptr, 1);
      |                               ^~~~~~~~~~~~~~~
subcmd-util.h:52:21: note: call to ‘realloc’ here
   52 |         void *ret = realloc(ptr, size);
      |                     ^~~~~~~~~~~~~~~~~~
subcmd-util.h:56:23: error: pointer ‘ptr’ may be used after ‘realloc’ [-Werror=use-after-free]
   56 |                 ret = realloc(ptr, size);
      |                       ^~~~~~~~~~~~~~~~~~
subcmd-util.h:52:21: note: call to ‘realloc’ here
   52 |         void *ret = realloc(ptr, size);
      |                     ^~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[4]: *** [/data/iwlwifi-fixes/tools/build/Makefile.build:97: /data/iwlwifi-fixes/tools/objtool/help.o] Error 1
make[3]: *** [Makefile:59: /data/iwlwifi-fixes/tools/objtool/libsubcmd-in.o] Error 2
make[2]: *** [Makefile:63: /data/iwlwifi-fixes/tools/objtool/libsubcmd.a] Error 2
make[1]: *** [Makefile:69: objtool] Error 2
make: *** [Makefile:1349: tools/objtool] Error 2

Why is it? How to fix it?

you are viewing a single comment's thread
view the rest of the comments
[–] cbarrick 3 points 1 year ago* (last edited 1 year ago) (8 children)

Why is it?

The code hitting that error is here:

https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes.git/tree/tools/lib/subcmd/subcmd-util.h

It looks fine to me.

What you are seeing is a warning that your compiler may have found a use-after-free bug, but I think this is a false positive. Your build is configured to turn this warning into a hard error.

How to fix it?

I think it will be difficult to know how to fix this without knowing more about your build setup. Are you passing any custom CFLAGS? What compiler and version are you using?

Also, here is someone asking about the same issue (in the same code) on Stack Exchange using GGC 12.1:

https://unix.stackexchange.com/questions/709671/linux-kernel-5-15-54-compilation-errors-with-gcc-12-1

This was the top result when Googling linux "-Werror=use-after-free".

I believe you can disable this warning in this file by adding a pragma after the includes (line 8):

#pragma GCC diagnostic ignored "-Wuse-after-free"

See https://stackoverflow.com/questions/925179/selectively-remove-a-warning-message-using-gcc

Edit: If you don't want to change the code, try disabling the use-after-free warning from the make call:

make CFLAGS="-Wno-use-after-free"
[–] nothingness 1 points 1 year ago* (last edited 1 year ago) (1 children)
  1. make CFLAGS="-Wno-use-after-free" ---> didn't work, same errors

  2. there's no "use-after-free" flag in any Makefile of the repo, no string "use-after-free" either, only the comments

  3. (line 8): #pragma GCC diagnostic ignored "-Wuse-after-free" ---> line 8 of what file? Makefile?

Any idea?

[–] cbarrick 1 points 1 year ago* (last edited 1 year ago)
  1. Bummer that the CFLAGS trick didn't work.

  2. use-after-free is a default warning. The makefile has -Werror to turn warnings into errors.

  3. The C file that I linked to (subcmd-util.h)

load more comments (6 replies)