Hi Soren,

thanks a lot for your response. I have attached all files relevant to my
issue:
 - source code,
 - SConstruct file,
 - DrWatson logfile,
 - user.dmp file (two last files are created in DrWatson directory after the
crash).

Unfortunately, I have no experience with the debugging workflow on Windows,
so I hope these are sufficient. My compiler is MS VC++ Express 2008.


Thanks for assistance,
Ondrej




2009/10/22 Søren Gjesse <[email protected]>

> I have just tried to create a Visual Studio project like the
> v8_sample_shell containing your code (actually just putting your code in
> shell.cc) and added the option /EHsc. It seems to run fine for me in both
> Debug and Release build. I am using used Visual Studio 2005. I also tried to
> add option /EHsc to the v8 and v8_base project and that also seemed to work
> fine. If a turn on break on C++ exceptions in the Visual Studio debugger I
> also get a break when the C++ exception is thrown. Could you perhaps post
> some more information on the build options used to make the crash happen?
>
> Regards,
> Søren
>
> On Thu, Oct 22, 2009 at 08:14, ondras <[email protected]> wrote:
>
>>
>> Hi,
>>
>> I run into a very strange runtime error in my v8 application. I
>> managed to track down the issue and I am including a minimal working
>> sample. This code must be compiled with MSVC and then executed.
>>
>> I am possibly doing something very wrong here (although GCC way works
>> ok), but I am unable to find out what is the exact cause of the crash.
>> The error happens when the line with "TEST" ObjectTemplate gets
>> executed.
>>
>> Note that any of the following makes the issue disappear:
>>  - remove any of the HandleScopes;
>>  - remove the "throw" portion of JS code in execute2();
>>  - do not pass the v8::Object::New() to execute2()
>>
>>
>> Thanks a lot for any assistance,
>> Ondrej Zara
>> (code follows)
>>
>>
>>
>>
>>
>>
>>
>> #include <string>
>> #include <v8.h>
>>
>> void execute2(v8::Handle<v8::Object> someObject) {
>>        v8::HandleScope handle_scope;
>>        v8::TryCatch tc;
>>
>>        v8::Script::New(v8::String::New("throw 1;"))->Run();
>>
>>        if (tc.HasCaught()) { throw std::string("exception"); }
>> }
>>
>>  void execute1() {
>>        v8::HandleScope handle_scope;
>>        try {
>>                execute2(v8::Object::New());
>>        } catch (std::string e) {
>>        }
>> }
>>
>> void create_context() {
>>        v8::HandleScope handle_scope;
>>        v8::Context::New(NULL, v8::ObjectTemplate::New())->Enter();
>> }
>>
>> int main(int argc, char ** argv) {
>>        v8::HandleScope handle_scope;
>>
>>        create_context();
>>        execute1();
>>        v8::Handle<v8::ObjectTemplate> TEST = v8::ObjectTemplate::New();
>>
>>        return 0;
>> }
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
-~----------~----~----~----~------~----~------~--~---

#include <string>
#include <v8.h>

void execute2(v8::Handle<v8::Object> someObject) {
	v8::HandleScope handle_scope;
	v8::TryCatch tc;
	
	v8::Script::New(v8::String::New("throw 1;"))->Run();

	if (tc.HasCaught()) { throw std::string("exception"); }
}

 void execute1() {
	v8::HandleScope handle_scope;
	try {
		execute2(v8::Object::New());
	} catch (std::string e) {
	}
}

void create_context() {
	v8::HandleScope handle_scope;
	v8::Context::New(NULL, v8::ObjectTemplate::New())->Enter();
}

int main(int argc, char ** argv) {
	v8::HandleScope handle_scope;
	
	create_context();
	execute1();
	v8::Handle<v8::ObjectTemplate> TEST = v8::ObjectTemplate::New();

	return 0;
}

Attachment: SConstruct
Description: Binary data

Attachment: drwtsn32.log
Description: Binary data

Attachment: user.dmp
Description: Binary data

Reply via email to