bugGnash - The GNU Flash player - Bugs: bug #46949, fb-gnash left console in unusable...

 
 

bug #46949: fb-gnash left console in unusable state after exiting

Submitted by:  Nutchanon Wetchasit <nachanon>
Submitted on:  Fri 22 Jan 2016 07:52:02 AM UTC  
 
Category: gui-fbSeverity: 3 - Normal
Release: masterStatus: Fixed
Privacy: PublicAssigned to: None
Open/Closed: Closed

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

(Jump to the original submission Jump to the original submission)

Mon 01 Feb 2016 09:00:55 AM UTC, comment #8:

thanks !

Sandro Santilli <strk>
Project Member
Sun 31 Jan 2016 11:10:02 AM UTC, comment #7:

Current git version of Framebuffer Gnash now turn console back to text mode
properly when stopped by `fscommand("quit")` ActionScript, `--once`
command line switch, SIGINT (Ctrl+C), and SIGTERM (`killall fb-gnash`).

Screenshot after running `fb-gnash -v secondframeexit12-repaint.swf`:
(Test SWF from file #36046, bug #27981; with `set ignoreFSCommand false` in `~/.gnashrc`)
http://i.imgur.com/c1vyBWi.png

Screenshot after running `fb-gnash -v --once 12frames.swf`:
http://i.imgur.com/q0vAF8S.png

Screenshot after running `fb-gnash -v 12frames.swf` and pressed Ctrl+C:
http://i.imgur.com/MynEvRE.png

Screenshot after running `fb-gnash -v 12frames.swf` and used `killall fb-gnash`:
http://i.imgur.com/eyYM83G.png

You'd see that in every case, the console came back to text mode when Gnash
terminated. You'd also see that there's a "Segmentation fault" error shown
at the end of each run too.

Screenshots are attached in `fb-gnash_postrun-roundup.e705394.zip` as a reference.

This bug could be now marked as fixed.
The segmentation fault problem is filed separately as bug #47029.

Gnash: 0.8.11dev (git e705394 29-Jan-2016)
Framebuffer: inteldrmfb `/dev/fb0` 1366x768 32-bit
System: Debian GNU/Linux 7.0 Wheezy i386

(file #36217)

Nutchanon Wetchasit <nachanon>
Fri 29 Jan 2016 07:11:11 AM UTC, comment #6:

The 3 patches in patch #8887 have been pushed, this is ready for test.

Sandro Santilli <strk>
Project Member
Sat 23 Jan 2016 01:46:34 PM UTC, comment #5:

Patch included, see patch #8887.

After applied the patches, you'll see that either running
`fb-gnash --once 12frames.swf` and wait for it to terminate,
or running `fb-gnash 12frames.swf` and press Ctrl+C
bring console back to text mode properly.

Note: The patches does not fix the segmentation fault error in fb-gnash's
normal exit procedure. The reason that segmentation fault appears now is
that the patches make Gnash terminate in the normal exit path, which is
the same as one already used in termination by signal handler.

This segmentation fault issue is still remaining to be investigated.

Gnash: 0.8.11dev (patched git 62cfdfe 16-Jan-2016)
Framebuffer: inteldrmfb `/dev/fb0` 1366x768 32-bit RGBA
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Sat 23 Jan 2016 11:12:42 AM UTC, comment #4:

After testing around, I found three problems in fb-gnash's code which prevent
framebuffer from properly returning to text mode:

1. fb-gnash's self termination (due to `fb-gnash --once` or
`fscommand("quit")`) does not trigger a proper cleanup, as `Gui::quitUI()`
is not overridde; it simply call `std::exit()` straight away, so console is left
in unusable state as the cleanup code is not run.

On the other hand, if Gnash is terminating by signal (SIGINT or SIGTERM),
it will try to trigger exit cleanup; though this does not successfully
return console to usable state, due to...

2. FBGui's destructor calls wrong function, the right one should be
`FBGui::enable_terminal()` which restores console to text mode. And...

3. fb-gnash's `FBGui::_fd` integer which is used for deciding
whether to enter console cleanup, is not properly initialized. According to current
`FBGui::disable_terminal()` and `FBGui::enable_terminal()` code, it doesn't
seems to be used anymore. Both function just open current TTY, set video mode,
and closed it, without really doing anything meaningful with class's
`_fd` variable.

Gnash: 0.8.11dev (git 62cfdfe 16-Jan-2016)
Framebuffer: inteldrmfb `/dev/fb0` 1366x768 32-bit RGBA
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Sat 23 Jan 2016 05:52:28 AM UTC, comment #3:

There seems to be another issue too: if `--once` option was not used, and
user quitted Framebuffer Gnash with SIGINT (pressed Ctrl+C on keyboard),
it will terminate with Segmentation Fault in addition to unusable console.

Exact steps to reproduce:

  1. Switch the machine to text console (using Ctrl+Alt+F1 on keyboard).
  2. Login, and go to the directory which `12frames.swf` resides.
  3. Run `ulimit -c unlimited` to enable memory dump on segmentation fault.
  4. Run `fb-gnash 12frames.swf`, wait until five yellow boxes appear on the screen.
  5. Wait around 3 seconds.
  6. Press Ctrl+C on keyboard; Gnash would terminate (but the screen would not change).
  7. Blindly type commands to restart the machine, or press Ctrl+Alt+Del, or run `fbtotext` to restore the display.
  8. You'll see that there is a file named `core` in the same directory as `12frames.swf`. If you run `fbtotext` instead of restarting, you might also see the "Segmentation fault (core dumped)" message on the console and/or "segfault" log entry in `dmesg` output too.

Debug log (verbosity 2 + action error) of this case is attached as
`12frames_gnash0.8.11dev-62cfdfe_normal.log`, and full GDB backtrace is
attached as `12frames_gnash0.8.11dev-62cfdfe_normal.gdb.log`.

Gnash: 0.8.11dev (git 62cfdfe 16-Jan-2016)
Framebuffer: inteldrmfb `/dev/fb0` 1366x768 32-bit RGBA
System: Debian GNU/Linux 7.0 Wheezy i386

(file #36138, file #36139)

Nutchanon Wetchasit <nachanon>
Fri 22 Jan 2016 10:12:17 AM UTC, comment #2:

I have written a small C program that issues `KDSETMODE` ioctl on
current console, restoring it back to text mode. In case anyone tried
to test this issue and stuck in graphics mode, he or she could run
this program to restore the console instead of rebooting.

See the attached `fbtotext.c`.

Gnash: 0.8.11dev (git 62cfdfe 16-Jan-2016)
Framebuffer: inteldrmfb `/dev/fb0` 1366x768 32-bit RGBA
System: Debian GNU/Linux 7.0 Wheezy i386

(file #36129)

Nutchanon Wetchasit <nachanon>
Fri 22 Jan 2016 10:00:23 AM UTC, comment #1:

I have made a dummy 12-frames 1.0-sec SWF file `12frames.swf`
(with SWFTools' SWFC) to demonstrate this; see the attached `12frames.zip`.

Exact steps to reproduce:

  1. Switch the machine to text console (using Ctrl+Alt+F1 on keyboard).
  2. Login, and go to the directory which `12frames.swf` resides.
  3. Run `fb-gnash --once 12frames.swf`.
  4. You'll see that after 1 sec, the screen still show five orange boxes instead of switching back to command line.

Note: after the last step, the command line is still usable (even it is not visible),
you can type commands to restart the machine (or just use Ctrl+Alt+Del).

Screenshot is attached as `12frames_gnash0.8.11dev-62cfdfe.png`,
debug log (verbosity 2 + action error log) is attached as
`12frames_gnash0.8.11dev-62cfdfe.log`.

Gnash: 0.8.11dev (git 62cfdfe 16-Jan-2016)
Framebuffer: inteldrmfb `/dev/fb0` 1366x768 32-bit RGBA
System: Debian GNU/Linux 7.0 Wheezy i386

(file #36126)

Nutchanon Wetchasit <nachanon>
Fri 22 Jan 2016 07:52:02 AM UTC, original submission:

This is a follow-up to bug #46308 comment 7.

While I was testing Gnash's FrameBuffer UI in bug #46308, I found that
when `fb-gnash` is run on FrameBuffer console, as it finished running,
the screen would not go back to command line display; instead, it just
continue showing the last SWF frame, and switching back to X11 or other console
using Alt+Fn key doesn't work.

Currently, one must blindly type commands to switch to root user and run
`shutdown -r now`, `init 6`, pressing Ctrl+Alt+Del, or issue magic SysRq
on keyboard to reboot the machine in order to get the display back to usable state.

Gnash: 0.8.11dev (git 62cfdfe 16-Jan-2016)
Framebuffer: inteldrmfb `/dev/fb0` 1366x768 32-bit RGBA
X11: xorg 1:7.7+3~deb7u1 with xserver-xorg-video-intel 2:2.19.0-6 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Note: `textmode` command from `svgalib-bin` package and `reset` command
from `ncurses-bin` package didn't seem to help in this case.

Nutchanon Wetchasit <nachanon>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #36217:  fb-gnash_postrun-roundup.e705394.zip added by nachanon (18KiB - application/zip - Screenshots after running Framebuffer Gnash 0.8.11dev git e705394)
file #36138:  12frames_gnash0.8.11dev-62cfdfe_normal.log added by nachanon (4KiB - text/x-log - Verbosity=2 debug log and full GDB backtrace from Framebuffer Gnash 0.8.11dev (git 62cfdfe 16-Jan-2016) running `12frames.swf` in normal (non-oneshot) mode)
file #36139:  12frames_gnash0.8.11dev-62cfdfe_normal.gdb.log added by nachanon (14KiB - text/x-log - Verbosity=2 debug log and full GDB backtrace from Framebuffer Gnash 0.8.11dev (git 62cfdfe 16-Jan-2016) running `12frames.swf` in normal (non-oneshot) mode)
file #36129:  fbtotext.c added by nachanon (1KiB - text/x-csrc - Utility for resetting framebuffer console to text mode)
file #36128:  12frames_gnash0.8.11dev-62cfdfe.log added by nachanon (4KiB - text/x-log - Verbosity=2 debug log from Framebuffer Gnash 0.8.11dev (git 62cfdfe 16-Jan-2016) running `12frames.swf`)
file #36127:  12frames_gnash0.8.11dev-62cfdfe.png added by nachanon (2KiB - image/png - Screenshot from Framebuffer Gnash 0.8.11dev (git 62cfdfe 16-Jan-2016) running `12frames.swf`)
file #36126:  12frames.zip added by nachanon (1KiB - application/zip - Dummy 12-frames Flash file, with source code and build script)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by strk (Posted a comment)
  • -unavailable- added by nachanon (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 10 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Mon 01 Feb 2016 09:00:55 AM UTCstrkStatusReady For Test=>Fixed
      Open/ClosedOpen=>Closed
    Sun 31 Jan 2016 11:10:02 AM UTCnachanonAttached File-=>Added fb-gnash_postrun-roundup.e705394.zip, #36217
    Fri 29 Jan 2016 07:11:11 AM UTCstrkStatusNone=>Ready For Test
    Sat 23 Jan 2016 05:52:28 AM UTCnachanonAttached File-=>Added 12frames_gnash0.8.11dev-62cfdfe_normal.log, #36138
      Attached File-=>Added 12frames_gnash0.8.11dev-62cfdfe_normal.gdb.log, #36139
    Fri 22 Jan 2016 10:12:17 AM UTCnachanonAttached File-=>Added fbtotext.c, #36129
    Fri 22 Jan 2016 10:06:15 AM UTCnachanonAttached File-=>Added 12frames_gnash0.8.11dev-62cfdfe.log, #36128
    Fri 22 Jan 2016 10:03:50 AM UTCnachanonAttached File-=>Added 12frames_gnash0.8.11dev-62cfdfe.png, #36127
    Fri 22 Jan 2016 10:00:23 AM UTCnachanonAttached File-=>Added 12frames.zip, #36126

    Back to the top


    Powered by Savane 3.1-cleanup1