Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segmentation fault while turning off display port cable and mouse pointer is positioned on the monitor which is going off #15

Closed
NsCDE opened this issue Jan 12, 2020 · 4 comments
Assignees
Labels
type:enhancement Augmenting an existing feature

Comments

@NsCDE
Copy link
Contributor

NsCDE commented Jan 12, 2020

Hello!

As per request on fvwm@fvwm.org, I have compiled (with -g) fvwm3 and tried things what Thomas said it would be nice to try.

There are glitches (described in separate issues), but the main one is this from the subject: if I enable secondary monitor, either before login or with "xrandr --output eDP1 --mode 1920x1080 --primary --output DP1 --mode 2560x1440 --right-of eDP1 --noprimary" I can work ok.

If mouse pointer is on eDP1 and I turn off DP1, windows from the DP1 are migrated to eDP1 and nothing crashes. But, if mouse pointer is left on the DP1 while pulling off it's cable, FVWM 3 dies with segmentation fault and I'm logged out.

System:
HP EliteBook 850 G2
CentOS 7 x86_64
Xorg X.Org X Server 1.20.4
fvwm3 from today's (12. 1. 2020.) clone of the repo.

Here is the gdb trace of the core dump. I have them 3 (repeatable) and they are all the same. Some debug info is missing, but probably this is enought description and function names for thing to be repeatable.

(root!prokopije:~)# gdb /opt/fvwm3/bin/fvwm3 /var/coredumps/core-prokopije-fvwm3-7011-11-6392
Reading symbols from /opt/fvwm3/bin/fvwm3...done.
[New LWP 6392]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/opt/fvwm3/bin/fvwm3 -f /opt/NsCDE/config/NsCDE-Main.conf -s'.
Program terminated with signal 11, Segmentation fault.
#0 monitor_by_name (name=) at FScreen.c:130
130 FScreen.c: No such file or directory.
Missing separate debuginfos, use: debuginfo-install bzip2-libs-1.0.6-13.el7.x86_64 cairo-1.15.12-4.el7.x86_64 expat-2.1.0-10.el7_3.x86_64 fontconfig-2.13.0-4.3.el7.x86_64 freetype-2.8-14.el7.x86_64 fribidi-1.0.2-1.el7_7.1.x86_64 gdk-pixbuf2-2.36.12-3.el7.x86_64 glib2-2.56.1-5.el7.x86_64 glibc-2.17-292.el7.x86_64 graphite2-1.3.10-1.el7_3.x86_64 harfbuzz-1.7.5-2.el7.x86_64 libICE-1.0.9-9.el7.x86_64 libSM-1.2.2-2.el7.x86_64 libX11-1.6.7-2.el7.x86_64 libXau-1.0.8-2.1.el7.x86_64 libXcursor-1.1.15-1.el7.x86_64 libXext-1.3.3-3.el7.x86_64 libXfixes-5.0.3-1.el7.x86_64 libXft-2.3.2-2.el7.x86_64 libXpm-3.5.12-1.el7.x86_64 libXrandr-1.5.1-2.el7.x86_64 libXrender-0.9.10-1.el7.x86_64 libblkid-2.23.2-61.el7_7.1.x86_64 libcroco-0.6.12-4.el7.x86_64 libffi-3.0.13-18.el7.x86_64 libgcc-4.8.5-39.el7.x86_64 libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64 libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64 libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64 libmount-2.23.2-61.el7_7.1.x86_64 libpng-1.5.13-7.el7_2.x86_64 librsvg2-2.40.20-1.el7.x86_64 libselinux-2.5-14.1.el7.x86_64 libstroke-0.5.1-33.el7.x86_64 libthai-0.1.14-9.el7.x86_64 libuuid-2.23.2-61.el7_7.1.x86_64 libxcb-1.13-1.el7.x86_64 libxml2-2.9.1-6.el7_2.3.x86_64 pango-1.42.4-4.el7_7.x86_64 pcre-8.32-17.el7.x86_64 pixman-0.34.0-1.el7.x86_64 xz-libs-5.2.2-1.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) bt
#0 monitor_by_name (name=) at FScreen.c:130
#1 0x00000000004861b3 in FindScreen (screen=screen@entry=FSCREEN_BY_NAME, arg=) at FScreen.c:383
#2 FScreenGetScrRect (arg=arg@entry=0x7ffe64ed0a20, screen=screen@entry=FSCREEN_BY_NAME, x=x@entry=0x7ffe64ed08c0, y=y@entry=0x7ffe64ed08c4, w=w@entry=0x7ffe64ed08c8, h=h@entry=0x7ffe64ed08cc)
at FScreen.c:433
#3 0x000000000044d507 in __place_window (reason=0x7ffe64ed0930, win_opts=0x7ffe64ed0ba0, mode=1, attr_g=0x7ffe64ed0b90, pstyle=0x7ffe64ed0c50, exc=0x1721470, start_style=...) at placement.c:1669
#4 setup_window_placement (fw=, pstyle=pstyle@entry=0x7ffe64ed0c50, attr_g=attr_g@entry=0x7ffe64ed0b90, win_opts=win_opts@entry=0x7ffe64ed0ba0, mode=mode@entry=PLACE_AGAIN)
at placement.c:2277
#5 0x000000000044e19e in CMD_PlaceAgain (cond_rc=, exc=0x17631e0, action=0x1725d2a "") at placement.c:2353
#6 0x00000000004627cb in __execute_function (cond_rc=cond_rc@entry=0x7ffe64ed1360, exc=exc@entry=0x172fca0, action=action@entry=0x175f5f4 "PlaceAgain", exec_flags=,
exec_flags@entry=128 '\200', args=args@entry=0x0, has_ref_window_moved=has_ref_window_moved@entry=0) at functions.c:639
#7 0x00000000004634e1 in execute_function (exec_flags=128 '\200', action=0x175f5f4 "PlaceAgain", exc=0x172fca0, cond_rc=0x7ffe64ed1360) at functions.c:1302
#8 execute_function_override_window (cond_rc=cond_rc@entry=0x7ffe64ed1360, exc=exc@entry=0x173e0b0, action=0x175f5f4 "PlaceAgain", exec_flags=128 '\200', exec_flags@entry=0 '\000', fw=)
at functions.c:1352
#9 0x0000000000456859 in CMD_All (cond_rc=0x7ffe64ed1360, exc=0x173e0b0, action=) at conditional.c:1646
#10 0x00000000004627cb in __execute_function (cond_rc=cond_rc@entry=0x0, exc=exc@entry=0x1748740, action=action@entry=0x49e1d9 "All PlaceAgain", exec_flags=, exec_flags@entry=0 '\000',
args=args@entry=0x0, has_ref_window_moved=has_ref_window_moved@entry=0) at functions.c:639
#11 0x00000000004634e1 in execute_function (exec_flags=0 '\000', action=0x49e1d9 "All PlaceAgain", exc=0x1748740, cond_rc=0x0) at functions.c:1302
#12 execute_function_override_window (cond_rc=cond_rc@entry=0x0, exc=exc@entry=0x0, action=action@entry=0x49e1d9 "All PlaceAgain", exec_flags=exec_flags@entry=0 '\000', fw=fw@entry=0x0) at functions.c:1352
#13 0x0000000000428e97 in HandleRRScreenChangeNotify (e=e@entry=0x7ffe64ed16b0) at events.c:1798
#14 0x000000000042b5b8 in dispatch_event (e=e@entry=0x7ffe64ed16b0) at events.c:4122
#15 0x000000000042c25d in HandleEvents () at events.c:4231
#16 0x000000000040af4a in main (argc=, argv=0x7ffe64ed1f28) at fvwm3.c:2597

@ThomasAdam
Copy link
Member

ThomasAdam commented Jan 12, 2020

Hello,

Thank you for your bug report. Can you please try and reproduce this on the ta/desktops branch, please? I've made a number of different changes there which aren't yet on master.

From my limited testing based on your report, turning off the active screen with xrandr which also contains the mouse pointer, doesn't crash fvwm3, and indeed, unlike the code on master at the moment, when monitors are disabled/created, I'm not blindly running All PlaceAgain which was half the problem. Instead, windows on the inactive output are moved to the active monitor.

All of that said, I've just noticed that you were invoking fvwm3 with the -s option. For now, would you mind removing that option to fvwm3? -s makes sense if you want fvwm3 to start up completely independently of each other on all screens, but with RandR support, fvwm3 should cope much better, and it might be that I end up making -s a noop in that regard. But for now, please remove -s and see how things go.

@ThomasAdam ThomasAdam added the type:bug Something's broken! label Jan 12, 2020
@NsCDE
Copy link
Contributor Author

NsCDE commented Jan 13, 2020

Hello Thomas,

Branch ta/desktops indeed does not reproduce this bug. I can left pointer on monitor which is going to be shut off and nothing happens, but windows from dead output are not moved to active one. They wait there and when I turn monitor back, they are here.

Maybe (on the end product) there should be some builtin fvwmfunc for that situation, but which can be overriden by user in configuration.

About "-s" ... it was put there by display manager during login. I didn't even noticed that in gdb trace. I have made sure it is disabled prior to ta/desktops testing.

@ThomasAdam
Copy link
Member

@NsCDE The problem with having a function is it has the ability to really get confusing. I'll look into it. Thanks!

@ThomasAdam ThomasAdam self-assigned this Jan 13, 2020
@ThomasAdam ThomasAdam added type:enhancement Augmenting an existing feature and removed type:bug Something's broken! labels Jan 13, 2020
@ThomasAdam
Copy link
Member

This has been fixed on ta/fix-gh-16 -- unclear which change as there were a number of little changes which will have fixed this. Will reference this issue in the commit message when reordered and merged to master.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:enhancement Augmenting an existing feature
Projects
Status: Done
Development

No branches or pull requests

2 participants