Opened 11 years ago

Closed 11 years ago

Last modified 10 years ago

#1044 closed bug (fixed)

crash when creating new GRASS location on Windows

Reported by: lubaby Owned by: telwertowski
Priority: critical: causes crash or data corruption Milestone:
Component: GRASS Version: Trunk
Keywords: Cc: jef@…
Must Fix for Release: Yes Platform: All
Platform Version: Awaiting user input: no

Description

QGIS (Windows version only) crashes if you are trying to create location with almost same name as exist (the only difference is character case).

Steps to reproduce:

  1. Create new GRASS location with name "bug"
  2. Now try to create another GRASS location with name "Bug"
  3. After last wizard step the QGIS crashes

The problem is that Linux is case sensitive (bug and Bug are two different strings) but in Windows there is impossible to create two files named "bug" and "Bug".

Change History (17)

comment:1 Changed 11 years ago by marcopx

I think that the only possible solution is to introduce a *name check* to prevent this error, telling that the location *Bug* already exists and repromp for a new name.

Marco

comment:2 Changed 11 years ago by marcopx

Milestone: Version 0.9.2Version 1.0
Type: bugenhancement

comment:3 Changed 11 years ago by timlinux

Type: enhancementdefect

comment:4 Changed 11 years ago by msieczka

Summary: Crash when creating new GRASS locationcrash when creating new GRASS location on Windows
Type: defectbug
Version: HEAD0.11.0

Bug confirmed under WINE 1.0.0 configured to emulate Win XP, on amd64 Debian testing using Marco's "QGIS 0.11.0 for Windows pre-release testing installer".

Indeed it seems the culprit is Windows is not case-sensitive as GNU/Linux is.

comment:5 in reply to:  4 Changed 11 years ago by marcopx

Cc: jef@… added

Replying to msieczka:

Bug confirmed under WINE 1.0.0 configured to emulate Win XP, on amd64 Debian testing using Marco's "QGIS 0.11.0 for Windows pre-release testing installer".

Indeed it seems the culprit is Windows is not case-sensitive as GNU/Linux is.

Absolutely! Windows is NOT case sensitive. As I said two months ago, there would be a simple solution: introduce a *name check* function to prevent this error, checking if the location's name (that is the folder) already exixts and, if yes, telling that the location *Bug* already exists and reprompt for a new name.

I donn't know if that should be done in GRASS code; actually I think that we could do that in one of the src\qgis-dev\src\plugins\grass\ cpp files

Jurgen?

comment:6 Changed 11 years ago by telwertowski

Owner: changed from nobody to telwertowski

This also happens on a Mac.

There's already a duplicate name check in qgsgrassnewmapset.cpp. It needs to be made case insensitive for Mac and Win.

comment:7 Changed 11 years ago by telwertowski

Resolution: fixed
Status: newclosed

Fixed by r9287.

comment:8 in reply to:  7 Changed 11 years ago by cgsbob

Resolution: fixed
Status: closedreopened

Replying to telwertowski:

Fixed by r9287.

I think there is a problem with r9287. I'm running qt4.4 and I get this compile error:

Scanning dependencies of target grassplugin
[ 87%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o
In file included from /home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.cpp:18:
/home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.h:99: error: ‘QPainter’ has not been declared
/home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.cpp:523: error: prototype for ‘void QgsGrassPlugin::postRender(QPainter*)’ does not match any in class ‘QgsGrassPlugin’
/home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.h:99: error: candidate is: void QgsGrassPlugin::postRender(int*)
make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o] Error 1
make[1]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2
make: *** [all] Error 2

The complete compiler output can be found here: http://rafb.net/p/SAY4QJ37.html

comment:9 Changed 11 years ago by msieczka

Version: 0.11.0HEAD

And I get a foloowing error in r9290:

[ 91%] Generating ui_qgsprojectionselectorbase.h
/home/shoofi/src/straight/qgis-trunk/src/ui/qgsprojectionselectorbase.ui: An invalid icon property 'windowIcon' was encountered.
Scanning dependencies of target grassplugin
[ 92%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o
In file included from /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.cpp:18:
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.h:99: error: 'QPainter' has not been declared
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.cpp:523: error: prototype for 'void QgsGrassPlugin::postRender(QPainter*)' does not match any in class 'QgsGrassPlugin'
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.h:99: error: candidate is: void QgsGrassPlugin::postRender(int*)
make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o] Error 1
make[1]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2
make: *** [all] Error 2

comment:10 Changed 11 years ago by msieczka

Platform: WindowsAll

comment:11 Changed 11 years ago by telwertowski

Status: reopenednew

These last two items were caused by r9288 which upgraded the plugin from Qt3 to Qt4. X11 needed a QPainter declaration that Mac did not. Fixed by r9291.

comment:12 Changed 11 years ago by telwertowski

Resolution: fixed
Status: newclosed

comment:13 Changed 11 years ago by msieczka

Resolution: fixed
Status: closedreopened

Yet another error, in r9291:

[ 92%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmodel.o
[ 93%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmapcalc.o
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual void QgsGrassMapcalc::mousePressEvent(QMouseEvent*)':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:278: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:278: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:288: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:288: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual QStringList QgsGrassMapcalc::checkRegion()':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:494: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:494: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual bool QgsGrassMapcalc::inputRegion(Cell_head*, bool)':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:549: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:549: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'void QgsGrassMapcalc::growCanvas(int, int, int, int)':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:957: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:957: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:965: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:965: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'void QgsGrassMapcalc::save()':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1124: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1124: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1175: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1175: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'bool QgsGrassMapcalcConnector::tryConnectEnd(int)':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1990: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1990: error: must #include <typeinfo> before using typeid
make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmapcalc.o] Error 1
make[1]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2
make: *** [all] Error 2

comment:14 Changed 11 years ago by telwertowski

Status: reopenednew

Add the line

#include <typeinfo>

after #include <math.h> and try compiling again. I will wait for any other issues before updating svn.

What OS are you using? I will also add a comment that this file is needed for a particular OS so it doesn't get removed again.

comment:15 Changed 11 years ago by telwertowski

Resolution: fixed
Status: newclosed

The last issue is fixed by gcc 4.3 compatibility changes in r9292.

comment:16 Changed 11 years ago by msieczka

Buids fine now. I'm on Debian testing amd64, gcc 4.3.1.

comment:17 Changed 10 years ago by (none)

Milestone: Version 1.0.0

Milestone Version 1.0.0 deleted

Note: See TracTickets for help on using tickets.