bugGNU Octave - Bugs: bug #37623, MinGW: Crash on incorrect syntax...

 
 

bug #37623: MinGW: Crash on incorrect syntax on Windows 8

Submitted by:  None
Submitted on:  Wed 24 Oct 2012 02:28:17 AM UTC  
 
Category: InterpreterSeverity: 3 - Normal
Priority: 5 - NormalItem Group: Crash
Status: Need InfoAssigned to: None
Originator Name: GeorgeOriginator Email: -unavailable-
Open/Closed: OpenRelease: 3.6.1
Operating System: Microsoft Windows

Add a New Comment (Rich MarkupRich 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 27 Jan 2014 10:46:09 PM UTC, comment #24:

AFAIK the problem is still present in 3.8. See [1]. The bug lies in gnulib.

[1] http://octave.1599824.n4.nabble.com/How-to-open-octave-3-8-GUI-td4661215.html

Michael Goffioul <goffioul>
Project Member
Mon 27 Jan 2014 10:13:02 PM UTC, comment #23:

> i just installed octave 3.6.4 for windows


We are not maintaining that version anymore. Can you try with 3.8?

Jordi GutiƩrrez Hermoso <jordigh>
Project Administrator
Mon 27 Jan 2014 09:54:42 PM UTC, comment #22:

hello this is still an issue, i just installed octave 3.6.4 for windows (the visual studio version) on windows 8 and incorrect syntax causes crash. on the other hand the -i extension to the target sorts this issue (and also brings back the prompt). clearly would be better if the installer defaulted the target to interactive mode etc so we don't all spend 15 mins googling this solution! :)

Iain Leverett <pavlev>
Sun 19 Jan 2014 08:40:51 PM UTC, comment #21:

@Mike:
Windows 8 is the platform where the issue was found.
I don't have Win 8 anymore, so I can't check myself.

Adapted the title to include "Windows 8".

Philip Nienhuis <philipnienhuis>
Project Member
Sun 19 Jan 2014 07:36:02 PM UTC, comment #20:

I do not see this issue running an MXE build of Octave 3.8.0 (MinGW-based) on Windows XP. Is this now fixed or no longer a problem?

Mike Miller <mtmiller>
Project Member
Sat 17 Aug 2013 09:53:33 AM UTC, comment #19:

Hi,
I just saw this discussion and I have the same problem. Octave closes after every syntax error and it doesn't plot. I'm using Octave 3.6.4 on Windows 8.

I've tried solving the closing on syntax error by adding -i to the shortcut path. E.g. the shortcut points to "C:\Octave\Octave3.6.2_gcc4.6.2\bin\octave.exe -i". But I am unable to change the shortcuts path because the name is not specified in the Target box. And I can't rename the original file 'cause it would change the extension. So I'm puzzled to how that is supposed to work.

There is also a suggestion that may solve the plot issue:
"Adding the --line-editing flag did fix the plot issue."
But I don't know what that means, so I haven't tried it. Or is there some other way?

I'm not so computer wise to understand most of the other suggestions. But if someone can help I would appreciate it.

Thank you.

Duje Roje <duje>
Thu 03 Jan 2013 01:57:13 AM UTC, comment #18:

Michael, sorry for the delay, I got caught up in the holidays. Hope yours were well.

Here's the output run normally :

isatty (stdin): 64
IsConsoleHandle (stdin): 0
IsConsoleHandle2 (stdin): 1
ISATTY (stdin): 0
isatty (stdout): 64
IsConsoleHandle (stdout): 0
IsConsoleHandle2 (stdout): 1
ISATTY (stdout): 0

and the output as test.tty <NUL :

isatty (stdin): 64
IsConsoleHandle (stdin): 0
IsConsoleHandle2 (stdin): 0
ISATTY (stdin): 0
isatty (stdout): 64
IsConsoleHandle (stdout): 0
IsConsoleHandle2 (stdout): 1
ISATTY (stdout): 0

Tyler <ty36>
Sun 23 Dec 2012 08:46:49 PM UTC, comment #17:

Tyler, would you be able to test this new program? Please run it normally, then run it as:

test-tty.exe <NUL

in a windows command prompt.

(file #27146)

Michael Goffioul <goffioul>
Project Member
Fri 21 Dec 2012 12:08:23 AM UTC, comment #16:

Thanks. So it definitely looks like a bug in gnulib (as I suspected, the assumption of the IsConsoleHandler macro is not valid anymore). I've reported it to the gnulib mailing list [1].

[1] http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00092.html

Michael Goffioul <goffioul>
Project Member
Thu 20 Dec 2012 11:46:18 PM UTC, comment #15:

This is the result after compiling and running the test code:

isatty (stdin): 64
IsConsoleHandle (stdin): 0
isatty (stdout): 64
IsConsoleHandle (stdout): 0

Tyler <ty36>
Thu 20 Dec 2012 04:13:15 PM UTC, comment #14:

All these results are consistent and point in the direction of failure to detect stdin/stdout as TTY.

When interactive and line-editing flags are not set, an error will make octave to exit, and octave will not use readline internally. The readline REPL is used differently by the FLTK and Qt backends:
- FLTK runs the GUI event loop synchronously with octave, events are processed during idle time in the readline REPL; no readline == no GUI events being processed
- Qt runs the GUI event loop in a separate thread, but uses the readline REPL when it needs to run some piece of code synchronously with octave, for instance to run callbacks, e.g. when closing a window; no readline => no callbacks being processed and windows do not close

So the issue is that gnulib::isatty() fails on stdin and/or stdout on Windows 8. I've attached a small test program. Would you be able to compile and run it on Windows 8? If you installed the MinGW version of octave, you should have everything you need to compile that problem (as it comes bundled with a compiler). To compile with gcc, use the command:

gcc -O2 -o test-tty.exe test-tty.c

To compile with Visual Studio, use this instead:

cl -O2 -MD -Fetest-tty.exe test-tty.c

For reference, the test program on a WinXP 32 bits gives:

isatty (stdin): 64
IsConsoleHandle (stdin): 1
isatty (stdout): 64
IsConsoleHandle (stdout): 1

The "IsConsoleHandle()" macro is a gnulib trick that is based on a strong assumption [1], which may not be valid anymore on Windows 8.

[1] http://lists.gnu.org/archive/html/bug-gnulib/2009-08/msg00065.html

Michael Goffioul <goffioul>
Project Member
Wed 19 Dec 2012 04:19:00 AM UTC, comment #13:

edit: all toolkits seem to work correctly with the --line-editing flag added

Tyler <ty36>
Wed 19 Dec 2012 04:17:42 AM UTC, comment #12:

Ok I tried the VS2010 version and came to these conclusions:

*The -i flag still needs to be added
*The gnuplot graphics toolkit seems to work with no further flags
(I also went back and this is the same for the mingw32 build)
*The qt graphics toolkit plots but will not close when you click the 'X'.
*The fltk toolkit still hangs when you plot in the VS2010 build
*Both the fltk and gnuplot toolkit seem to work correctly when the --line-editing flag is also added

Not sure if this is related but the only difference I noticed between the mingw32 and VS2010 build was that the terminal launched by the shortcut in the mingw32 had a white background as compared to the traditional command prompt style terminal with black background.

Tyler <ty36>
Wed 19 Dec 2012 02:14:12 AM UTC, comment #11:

This is weird, these flags are normally not needed when octave detects that stdin/stdout are attached to an interactive terminal, that is: isatty(...) returns true.

This may mean that either the implementation of isatty has changed in the Windows 8 Win32 API and/or that the gnulib replacement is incompatible with Windows 8.

It would be interesting to know whether the VS2010 version behaves the same or not. Could you give it a try? (both can be installed at the same time).

Michael Goffioul <goffioul>
Project Member
Wed 19 Dec 2012 01:58:37 AM UTC, comment #10:

Cool thanks. Adding the --line-editing flag did fix the plot issue.

I'm not sure about the VS2010 build. I have not tried that one.

Tyler <ty36>
Wed 19 Dec 2012 12:43:47 AM UTC, comment #9:

Does using also the flag --line-editing helps for the plot issue?

Does the VS2010 build show the same behavior (problem and workaround)?

Michael Goffioul <goffioul>
Project Member
Wed 19 Dec 2012 12:17:53 AM UTC, comment #8:

I had the same problems with Octave and Windows 8. I was able to keep Octave from closing on syntax error by adding -i to the shortcut to force interactive mode. E.g. the shortcut points to "C:\Octave\Octave3.6.2_gcc4.6.2\bin\octave.exe -i".

I haven't been able to get the plot to work correctly though

Tyler <ty36>
Fri 26 Oct 2012 02:11:11 PM UTC, comment #7:

Too bad it wasn't the libblas (or maybe it's good)

As an alternative you could try the 3.6.2 MinGW binary, or the 3.6.2 MSVC2010 binary, both can be grabbed from sourceforge.

Philip Nienhuis <philipnienhuis>
Project Member
Fri 26 Oct 2012 12:52:52 AM UTC, comment #6:

Ops, that was dumb. I got 3.4.3 working, and 3.6.1 is correct for the one that's not working.

George <genrommel>
Thu 25 Oct 2012 10:29:36 PM UTC, comment #5:

Oh, the Release version is actually 4.6.2, sorry about that.

I tried all of the libblas.dll s, none of them worked, not even libblas.dll.ref. No, there is no space in the install directory. I don't think it's hardware because it runs on the same computer on Windows 7, but not on Windows 8.

After some more testing, I found that it also won't plot anything.
It doesn't crash, it just does nothing when I try to plot. (gnu plot is installed and runs fine.)

example:
x=linspace[1,10,50];
y=sin(x);
plot(x,y)

Then nothing.

However, I tried installing an older version (gcc 4.5.2, also mingw32), and that works fine. So I guess I can just not be updated.

George <genrommel>
Thu 25 Oct 2012 09:25:53 PM UTC, comment #4:

Added "MinGW" to bug report title/summary

Philip Nienhuis <philipnienhuis>
Project Member
Thu 25 Oct 2012 09:21:47 PM UTC, comment #3:

You didn't install Octave in a directory path containing spaces, did you? (like "C:\Program Files(x86)" ) because that is a receipe for trouble.

Another possibility is that this is another manifestation of the notorious libblas versions issue with the MinGW builds.
This is known to turn up in completely unexpected and unpredictable places and usually it's in no way related to the actual error message (if any).
Have a look at bug #37231 and bug #35769.
I had the impression this was hardware (architecture)-dependent but I wouldn't be surprised if SW-platform (operating system level) may be involved as well.

What you can do to find a reliable libblas.dll:

In <OCTAVE_INSTALL_DIR>/bin there should be various versions of libblas..........dll.
Please backup the file libblas.dll and then, for each libblas......dll in turn, rename it to libblas.dll, restart Octave and try again.

In my case the Octave command:
demo plotyy
used to trigger crashes reliably.

Philip Nienhuis <philipnienhuis>
Project Member
Wed 24 Oct 2012 04:31:26 PM UTC, comment #2:

It's mingw32.

George <genrommel>
Wed 24 Oct 2012 01:45:41 PM UTC, comment #1:

Which Windows build are you using, or did you compile Octave yourself?

Jordi GutiƩrrez Hermoso <jordigh>
Project Administrator
Wed 24 Oct 2012 02:28:17 AM UTC, original submission:

When incorrect syntax or inapplicable operation applied, Octave crashes. I believe this is a compatibility issue with Windows 8. I am dual booted with Windows 7 and Octave runs fine in Windows 7. It was originally installed in Windows 8 (64 bit).

When an error is encountered, octave prints the usual syntax error message then immediately exits.

Some examples of code that cause the crash:

x=[1)

and

n=[1,2,3];
b=[3,2,1];
n*b

There is no error dialog box, only the "parse error: syntax error >>> x=[1)
^
"

Then octave exits.

Anonymous

 

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

Attach File(s):
   
   
Comment:
   

Attached Files
file #27146:  test-tty.c added by goffioul (1kB - text/x-csrc - Modified test program)
file #27129:  test-tty.c added by goffioul (488B - text/plain - Test program for TTY under Windows)

 

Depends on the following items: None found

Digest:
   bug dependencies.

 

Carbon-Copy List
  • -unavailable- added by pavlev (Posted a comment)
  • -unavailable- added by mtmiller (Posted a comment)
  • -unavailable- added by duje (Posted a comment)
  • -unavailable- added by svillemot
  • -unavailable- added by goffioul (Posted a comment)
  • -unavailable- added by ty36 (Posted a comment)
  • -unavailable- added by philipnienhuis (Posted a comment)
  • -unavailable- added by genrommel (Posted a comment)
  • -unavailable- added by jordigh (Posted a comment)
  • -unavailable- added by None (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 project members can vote.

     

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

     

     

    Follow 9 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Thu 27 Mar 2014 04:57:04 AM UTCmtmillerDependencies-=>bugs #41451 is dependent
    Thu 27 Mar 2014 04:55:22 AM UTCmtmillerDependencies-=>bugs #40473 is dependent
    Sun 19 Jan 2014 08:40:51 PM UTCphilipnienhuisSummaryMinGW: Crash on incorrect syntax=>MinGW: Crash on incorrect syntax on Windows 8
    Sun 19 Jan 2014 07:36:02 PM UTCmtmillerCategoryNone=>Interpreter
    Fri 29 Mar 2013 09:20:32 AM UTCsvillemotCarbon-Copy-=>Added svillemot
    Sun 23 Dec 2012 08:46:49 PM UTCgoffioulAttached File-=>Added test-tty.c, #27146
    Thu 20 Dec 2012 04:19:26 PM UTCgoffioulAttached File-=>Added test-tty.c, #27129
    Thu 25 Oct 2012 09:25:53 PM UTCphilipnienhuisSummaryCrash on incorrect syntax=>MinGW: Crash on incorrect syntax
    Wed 24 Oct 2012 01:45:41 PM UTCjordighStatusNone=>Need Info

    Back to the top


    Powered by Savane 3.1-cleanup