Author Topic: Slickedit crashes when creating new project  (Read 407 times)

yg

  • Junior Community Member
  • Posts: 6
  • Hero Points: 0
Slickedit crashes when creating new project
« on: January 28, 2021, 11:47:43 am »
When adding my project tree, Slickedit terminate after few seconds.
Slickedit Pro 2020 (V25.0.1.0 64-bit)

terminal message:
Segmentation fault (core dumped)

dmesg:
vs_exe[17329]: segfault at 7ffeba9d0fc8 ip 00007f46f7f1d48e sp 00007ffeba9d0fc0 error 6 in libc-2.27.so[7f46f7e89000+1e7000]
[261762.195496] Code: 00 48 83 fb 1f 0f 86 61 01 00 00 48 83 e3 f0 48 83 fb bf 0f 97 c0 48 39 f3 0f 82 f5 06 00 00 84 c0 0f 85 ed 06 00 00 48 85 ff <48> 89 74 24 08 49 89 fe 0f 84 bc 06 00 00 41 89 df 41 c1 ef 04 48

patrick

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 1471
  • Hero Points: 131
Re: Slickedit crashes when creating new project
« Reply #1 on: January 28, 2021, 03:57:19 pm »
If you can locate the core file, you can get a backtrace from it to post, or we can send you instructions on how to upload it to us so we can take a look at it.  Location and format of the core depend a bit on system setup.

All this depends on core dumps being enabled, the syslog message doesn't guarantee a core was dropped.  Go to a terminal, and run ulimit -c.  If it says unlimited, you're good, and a core was generated.  If it says something like "0", then no core was dumped.  If you can reproduce the problem, you can you can change that locally in a terminal session to force a core file to be dumped.  Run "ulimit -c unlimited" in a terminal, and then start SlickEdit from that terminal, reproduce the crash, and a core file will be produced.

Now for core file locations.

First check /var/crash.  If there's a .crash file in there for vs_exe, then that's a special apport crash file, and not a core file.  You can get the stack trace out of that by running "apport-unpack /var/crash/[crash file name] /tmp/crashdir, and picking out the stack trace file from /tmp/crashdir.

If it's not there, "cat /proc/sys/kernel/core_pattern" to see where the core file should be dropped.  If it's an absolute path, that will tell you exactly where the core file was placed. 

If it's not an absolute path, then it will be in the current directory of the vs_exe process when it crashed, which will usually be the workspace directory, but there are some SlickEdit settings that can change where the CWD would be, so search for it underneath your workspace directory as well.

Once you have a core file, you can substitute in your paths and run the following to get a backtrace to post for us:
Code: [Select]
$ > gdb [SlickEdit install dir]/bin/vs_exe [core file]
GNU gdb (Debian 8.2.1-2+b3) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
...
(gdb) thread apply all bt
BACKTRACE SHOULD FOLLOW

Support will PM you with the instructions for uploading the core file in case you have any problems getting the stack trace.   

yg

  • Junior Community Member
  • Posts: 6
  • Hero Points: 0
Re: Slickedit crashes when creating new project
« Reply #2 on: January 31, 2021, 09:18:16 am »
Well, I found the root cause for those crashes.
There is a none Latin file in my source, if you create new slickedit project and adding folder tree with this file in it or in it subfolders, slickedit will crash. in addition, if you just drag the folder containing this file to you slickedit project windows (in order to add the folder to you project tree) it will crash too.

you can check if it happens in you slickedit too.

File link:
https://filebin.net/vk7x62ns2ud6hsn1
« Last Edit: January 31, 2021, 09:22:03 am by yg »

patrick

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 1471
  • Hero Points: 131
Re: Slickedit crashes when creating new project
« Reply #3 on: February 01, 2021, 02:48:55 pm »
I got your file, but can't reproduce a crash with it, no matter how I add it to a project.  With 25.0.1 on linux64.  I ran it with valgrind as well, but got no errors.   

If you can't find the core file, you can try posting your user.cfg.xml file from your configuration directory. (the default configuration directory for linux would be $HOME/.slickedit/25.0.1).  I have doubts that it's something specific to your configuration, but it's not impossible.

yg

  • Junior Community Member
  • Posts: 6
  • Hero Points: 0
Re: Slickedit crashes when creating new project
« Reply #4 on: February 02, 2021, 10:00:52 am »
Hi,
Below is the trace from the core dump file:
Please note that the "cmListFilesRecursive" call never stops in the trace, I didnt copy all the lines, I quit the trace in my terminal at #4396..:

Code: [Select]
#4395 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#4396 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVis---Type <return> to continue, or q <return> to quit---

Code: [Select]
GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from vs_exe...(no debugging symbols found)...done.
[New LWP 29057]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/home/<user>/slickedit-pro2020/bin/vs_exe'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fd96c07148e in _int_malloc (av=av@entry=0x7fd96c3c8c40 <main_arena>, bytes=bytes@entry=18765) at malloc.c:3567
3567 malloc.c: No such file or directory.
(gdb) thread apply all bt

Thread 1 (Thread 0x7fd97531f8c0 (LWP 29057)):
#0  0x00007fd96c07148e in _int_malloc (av=av@entry=0x7fd96c3c8c40 <main_arena>, bytes=bytes@entry=18765) at malloc.c:3567
#1  0x00007fd96c0743cd in __GI___libc_malloc (bytes=18765) at malloc.c:3075
#2  0x0000000001e223a9 in cmAllocator::allocate(unsigned long) ()
#3  0x0000000001ceb559 in cmStringT<char, 1, 254>::createNewRefBuf(char const*, long long, long long, bool) ()
#4  0x0000000001cebbb3 in cmStringT<char, 1, 254>::replaceRefBuf(char const*, long long, long long) ()
#5  0x0000000001cebf03 in cmStringT<char, 1, 254>::getMutableCString() ()
#6  0x0000000001cef958 in cmStringT<char, 1, 254>::normalizeFileSeps(bool) ()
#7  0x0000000001ba5d51 in cmFile::isUrl(cmROStringT<char, 1, 254> const&, cmStringT<char, 1, 30>*) ()
#8  0x0000000001bb3dd8 in cmFile::absoluteKeepSymlinks(cmROStringT<char, 1, 254> const&, cmROStringT<char, 1, 254> const&, bool) ()
#9  0x0000000001bb3268 in cmFile::absolute(cmROStringT<char, 1, 254> const&, cmROStringT<char, 1, 254> const&, bool) ()
#10 0x0000000001bb4e0b in cmFile::absolute(cmROStringT<char, 1, 30> const&, cmROStringT<char, 1, 30> const&, bool) ()
#11 0x0000000001bb6575 in cmFindFile_Posix::findFirst(cmROStringT<char, 1, 30> const&, cmFindFileInfo&, cmFindFileFlags, long long) ()
#12 0x0000000001be0c76 in cmFindFile::findNext(cmFindFileInfo&) ()
#13 0x0000000001bbca89 in cmFile::getFindFileInfo(cmROStringT<char, 1, 30> const&, cmFindFileInfo&, cmFindFileFlags) ()
#14 0x0000000001bbcba8 in cmFileDriver_Posix::fileExists(cmROStringT<char, 1, 30> const&, bool) ()
#15 0x0000000001bb184b in cmFile::fileExists(cmROStringT<char, 1, 30> const&, bool) ()
#16 0x0000000001bb6625 in cmFindFile_Posix::findFirst(cmROStringT<char, 1, 30> const&, cmFindFileInfo&, cmFindFileFlags, long long) ()
#17 0x0000000001be0c76 in cmFindFile::findNext(cmFindFileInfo&) ()
#18 0x0000000001bc8b17 in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#19 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
---Type <return> to continue, or q <return> to quit---
---Type <return> to continue, or q <return> to quit---
#20 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#21 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#22 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#23 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#24 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#25 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#26 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#27 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisitor>&, bool (*)()) [clone .constprop.620] ()
#28 0x0000000001bc8dba in cmListFilesRecursive(cmI_ListFilesAction&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, cmStringT<char, 1, 30> const&, bool, cmFindFileFlags, bool, cmStringT<char, 1, 30> (*)(cmROStringT<char, 1, 30> const&, int), bool, cmArray<cmFileRegex>&, cmArray<cmFileRegex>&, cmStringT<char, 1, 30> const&, cmDictionarySet<cmFileVisit---Type <return> to continue, or q <return> to quit---

patrick

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 1471
  • Hero Points: 131
Re: Slickedit crashes when creating new project
« Reply #5 on: February 02, 2021, 02:50:57 pm »
That looks more like it's getting lost walking the directories for files.  It should detect links that would cause loops, so not sure yet what's happening there.

I think you should be able to reproduce this with one of our command line tools, which would make debugging quicker. 

In your install directory, there's a executable called cmgrep.  We want to give that a try with the directory and wildcards you're using for your project, and see if it has the same failure.  Or if there are multiple wildcards, and there's just one of them that's behind it.  So for the wildcards you're using in the project you're having problems with, try something like this from the command line:

Code: [Select]
$ /path/to/SlickEdit/bin/cmgrep e -t SEARCHROOT -wc WILDCARDS

For example, to search all the .cpp and .h files under $HOME/projects/x:
Code: [Select]
$ /path/to/SlickEdit/bin/cmgrep e -t $HOME/projects/x -wc "*.cpp" "*.h"

I just have the command searching for "e" so it matches files, and if it's looping before it crashes, maybe we'll be able to see that in the output. But depending on the files you're searching for, it may be too much output.  If I were really searching for cpp files, I'd just grep for "include" instead of e.

If there's nothing obvious from the output, we can add some debug checks and output to cmgrep, and send it to you to get further.

Also, what filesystem type is it searching?  The way we track where we've visited it probably shouldn't matter, but this is an odd enough problem where I'm curious.
 

yg

  • Junior Community Member
  • Posts: 6
  • Hero Points: 0
Re: Slickedit crashes when creating new project
« Reply #6 on: February 02, 2021, 03:34:47 pm »
Hi,
I dont have cmgrep in my bin folder, but I saw a sgrep, using the command below, I got a core dump:
Code: [Select]
~/slickedit-pro2020/bin$ sgrep e -t /home/<user>/temp/nonlatin -wc "*.cpp"
Segmentation fault (core dumped)

Note that inside the "nonlatin" folder I only have one file (same as the previous post and also attached to this post).
Also, now the crash caused an ubuntu crash message, see attached pic.

Just to make sure, did you drag the "nonlatin" folder to your work space? or just the file? the problem is happening only when you drag the folder(and the file should be inside the folder).
 

patrick

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 1471
  • Hero Points: 131
Re: Slickedit crashes when creating new project
« Reply #7 on: February 02, 2021, 04:00:14 pm »
You're right, I meant sgrep.

I did drag the directory in.  I get an Add Tree prompt, I changed just the Source Files wildcard because it was *.java from a previous Add Tree, and hit OK.  It just adds the files.

I can run the same sgrep as you on that directory, it it doesn't have a problem.  Something else is going on in that directory that isn't carrying over in the zip file.  If you unzip that file zip file somewhere else, and run sgrep on the unzipped location, you still get the crash?

You know what filesystem type that's on? 

I'm going to put together some changes for sgrep I can send you so we can see what we're seeing on the API side when we try to walk through that directory.  I'll let you know when you can download it, and then you can retry the sgrep command with it.

patrick

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 1471
  • Hero Points: 131
Re: Slickedit crashes when creating new project
« Reply #8 on: February 02, 2021, 04:58:38 pm »
Once it's finished uploading, you'll get a PM for download instructions for the debug sgrep.  Once you get it, use it to run the same command you did before, but pipe it through tee to get a log, it's going to print out some extra information.

Code: [Select]
sgrep e -t /home/<user>/temp/nonlatin -wc "*.cpp" | tee /tmp/grep.log

If the log is short once compressed you can post it, otherwise you can use the upload instructions we sent you for the core file to upload the log file.

yg

  • Junior Community Member
  • Posts: 6
  • Hero Points: 0
Re: Slickedit crashes when creating new project
« Reply #9 on: February 03, 2021, 08:10:41 am »
File system is ext4:
Code: [Select]
/dev/nvme0n1p6 ext4      275G   98G  164G  38% /
I checked again on the unziped folder - same crashes.

Clark

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 5707
  • Hero Points: 457
Re: Slickedit crashes when creating new project
« Reply #10 on: February 03, 2021, 01:51:55 pm »
What is your LANG environment variable set to?

I would think SlickEdit would just be using Utf-8 but I want to rule out locale weirdness.

patrick

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 1471
  • Hero Points: 131
Re: Slickedit crashes when creating new project
« Reply #11 on: February 03, 2021, 02:50:20 pm »
Re Clark's post about LANG: that is probably it.  There does seem to be a bug where I can get the file walk to recurse until it blows the stack when locale isn't utf8, but one of the filenames is in UTF8 rather than the locale encoding.  We'll take a closer look, and send you a patched version with a test fix when it's ready.

Clark

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 5707
  • Hero Points: 457
Re: Slickedit crashes when creating new project
« Reply #12 on: February 03, 2021, 02:56:18 pm »
If your LANG environment variable is something like en_IN, change it to en_IN.utf8. This will fix your crash problem.

I suspect there is a bug somewhere though. SlickEdit should not crash.

yg

  • Junior Community Member
  • Posts: 6
  • Hero Points: 0
Re: Slickedit crashes when creating new project
« Reply #13 on: February 03, 2021, 04:24:51 pm »

So, the debug sgrep results:
Code: [Select]
sgrep_debug e -t /home/<user>/temp/nonlatin -wc "*.cpp"
      fnf /home/<user>/.local/bin/sgrep_debug: 2
ListFiles root /home/<user>/temp/nonlatin/
cmListFilesRecursive: opt=0 path=</home/<user>/temp/nonlatin/> relPath=<>
      fnf /home/<user>/temp/nonlatin/*: 2
   next temp=</home/<user>/temp/nonlatin/*> rp=<.> status=0
   next temp=</home/<user>/temp/nonlatin/*> rp=<> status=0
cmListFilesRecursive: opt=0 path=</home/<user>/temp/nonlatin/> relPath=<>
   next temp=</home/<user>/temp/nonlatin/> rp=<> status=0
cmListFilesRecursive: opt=0 path=</home/<user>/temp/nonlatin/> relPath=<>
   next temp=</home/<user>/temp/nonlatin/> rp=<> status=0
cmListFilesRecursive: opt=0 path=</home/<user>/temp/nonlatin/> relPath=<>
   next temp=</home/<user>/temp/nonlatin/> rp=<> status=0
cmListFilesRecursive: opt=0 path=</home/<user>/temp/nonlatin/> relPath=<>
   next temp=</home/<user>/temp/nonlatin/> rp=<> status=0
....
....

Changing LANG to utf8:
Code: [Select]
export LANG=en_IL.utf8
Fixed the Issue!!
Code: [Select]
sgrep_debug e -t /home/<user>/temp/nonlatin -wc "*.cpp"
      fnf /home/<user>/.local/bin/sgrep_debug: 2
ListFiles root /home/<user>/temp/nonlatin/
cmListFilesRecursive: opt=0 path=</home/<user>/temp/nonlatin/> relPath=<>
      fnf /home/<user>/temp/nonlatin/*: 2
   next temp=</home/<user>/temp/nonlatin/*> rp=<.> status=0
   next temp=</home/<user>/temp/nonlatin/*> rp=<这是一个示例文本.html> status=0
   next temp=</home/<user>/temp/nonlatin/*> rp=<..> status=0
Total found: 0  Matching files: 0  Total files searched: 0

I added to LANG override to the .bashrc to make it available to all the sessions. and it indeed solved to problem when executing slickedite from the terminal.
Any idea why it still crashes when I run it using a desktop shortcut?

patrick

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 1471
  • Hero Points: 131
Re: Slickedit crashes when creating new project
« Reply #14 on: February 03, 2021, 05:22:04 pm »
The window manager and display manager does not pull variables from the .bashrc, so they don't see that.

I wouldn't want to update the system wide locale without knowing why it was the way it is first.  (but that can be done with the update-locale command).

The easiest thing to do with the least impact would be to change the shortcut you're using to include the environment setting.  So if the shortcut executes "/opt/se2501/bin/vs +new" you want LANG to be en_IN.utf8, then you could change the shortcut to execute this instead "env LANG=en_IN.utf8 /opt/se2501/bin/vs +new".   (the en_IN.utf8 is just an example, use whatever locale that makes sense, as long as it's a utf8 one).