Bug 21954 - unset entire environment no longer works (regression since GDB 8.0)
Summary: unset entire environment no longer works (regression since GDB 8.0)
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: gdb (show other bugs)
Version: 8.1
: P2 normal
Target Milestone: ---
Assignee: Sergio Durigan Junior
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-08-15 12:52 UTC by Jonah Graham
Modified: 2017-08-16 09:40 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed: 2017-08-15 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jonah Graham 2017-08-15 12:52:48 UTC
doing 'unset env' no longer clears the whole environment. Compare GDB 8.0 (first) and current master (second) in the example below.

I did a git bisect and believe it was "C++ify gdb/common/environ.c" https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=9a6c7d9c021cfeb290d76584db7a01e57e7c3d4e that introduced the regression

$ gdb -q -ex 'unset env' -ex 'run' /usr/bin/env < /dev/null
Reading symbols from /usr/bin/env...(no debugging symbols found)...done.
Delete all environment variables? (y or n) [answered Y; input not from terminal]
Starting program: /usr/bin/env 
PWD=/scratch/gdb/binutils-gdb
SHLVL=0
[Inferior 1 (process 24267) exited normally]
(gdb) quit

$ ./gdb/gdb -q -ex 'unset env' -ex 'run' /usr/bin/env < /dev/null
Python Exception <type 'exceptions.ImportError'> No module named gdb: 
./gdb/gdb: warning: 
Could not load the Python gdb module from `/usr/local/share/gdb/python'.
Limited Python support is available from the _gdb module.
Suggest passing --data-directory=/path/to/gdb/data-directory.

Reading symbols from /usr/bin/env...(no debugging symbols found)...done.
Delete all environment variables? (y or n) [answered Y; input not from terminal]
Starting program: /usr/bin/env 
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_MENU_PREFIX=xfce-

-- snip--
Comment 1 Jonah Graham 2017-08-15 12:54:15 UTC
Hi Sergio, I have added you to the CC list as you were the author of the commit I identified. I hope that is ok.
Comment 2 Sergio Durigan Junior 2017-08-15 17:09:01 UTC
Thanks, I'll look into this.
Comment 3 Sourceware Commits 2017-08-15 17:55:15 UTC
The master branch has been updated by Sergio Durigan Junior <sergiodj@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=206726fbfdd521fbb184daedb71b85030453bf0b

commit 206726fbfdd521fbb184daedb71b85030453bf0b
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date:   Tue Aug 15 13:49:18 2017 -0400

    Fix PR gdb/21954: make 'unset environment' work again
    
    When I made commit 9a6c7d9c021cfeb290d76584db7a01e57e7c3d4e, which
    C++-fied gdb/common/environ.[ch], I mistakenly altered the behaviour
    of the 'unset environment' command.  This command, which should delete
    all environment variables, is now resetting the list of variables to
    the state they were when GDB was started.
    
    This commit fixes this regression, and also adds a test on
    gdb.base/environ.exp which really checks if 'unset environment'
    worked.
    
    gdb/ChangeLog:
    2017-08-15  Sergio Durigan Junior  <sergiodj@redhat.com>
    
    	PR gdb/21954
    	* infcmd.c (unset_environment_command): Use the 'clear' method on
    	the environment instead of resetting it.
    
    gdb/testsuite/ChangeLog:
    2017-08-15  Sergio Durigan Junior  <sergiodj@redhat.com>
    
    	PR gdb/21954
    	* gdb.base/environ.exp: Add test to check if 'unset environment'
    	works.
Comment 4 Sergio Durigan Junior 2017-08-15 17:55:37 UTC
Fixed.
Comment 5 Jonah Graham 2017-08-16 09:40:52 UTC
(In reply to Sergio Durigan Junior from comment #4)
> Fixed.

Thanks, this fixed our failing tests in Eclipse CDT!