Jump to content
The Dark Mod Forums

DarkRadiant hangs unless you use surface dialog [open]


Recommended Posts

Here is how to reproduce:

 

* load a map

* select a face

* use "copy shader"

 

The do one of the following

 

* use "paste shader"

* or press "s" to get the surface dialog

* or use "rotate and scale" from the edit menu

 

* Alternatively, just use "rotate and scale" right after map load to hang DR

 

in all these cases DR just hangs and has to be killed.

 

Workaround: Right after loading the map, select a brush and press "s" to show the surface dialog. Afterwards, you can copy and paste shaders ok.

 

This bug is really annoying, because whenever you forget to press "s" after mapload, DR hangs hard without any possibility to save your work.

 

This happens on Linux, with a fresh compiled version from SVN.

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

Doesn't appear on my end - I tried all of the above cases (loaded map, selected face, copied shader, pasted shader, opened surface dialog, opened rotate and scale).

 

I also tried to load a map and opened the rotate and scale dialog, works like a charm. I always tested this with test/pickpocket.map. Maybe this is map-specific?

 

This should go in the DarkRadiant forum, by the way.

 

edit: I'll try to recompile again and see if this occurs afterwards.

Link to comment
Share on other sites

Doesn't appear on my end - I tried all of the above cases (loaded map, selected face, copied shader, pasted shader, opened surface dialog, opened rotate and scale).

 

I also tried to load a map and opened the rotate and scale dialog, works like a charm. I always tested this with test/pickpocket.map. Maybe this is map-specific?

 

This should go in the DarkRadiant forum, by the way.

 

Just tried it with rain.map and it works there, but definitely hangs in stack.map (the paste operation seems to succeed, but afterwards it hangs).

 

I had these hangs for a very long time, but so far I couldn't pinpoint a way to trigger them. More info:

 

* linux (ubuntu 64 bit)

* debug build

 

Can you please move the thread then?

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

Couldn't reproduce it with most recent SVN either.

 

Just tried it with rain.map and it works there, but definitely hangs in stack.map (the paste operation seems to succeed, but afterwards it hangs).

I'll try it with test/stack then. edit: Nope, works fine here too.

 

More info:

* linux (ubuntu 64 bit)

* debug build

I only have a 32bit Ubuntu, but I haven't switched to it for a month or more. Maybe I can be bothered to look into it over the weekend.

 

Can you please move the thread then?

I can't - I don't have moderating rights. Maybe somebody else can move it.

Link to comment
Share on other sites

I'm also not experiencing the lockups on my work system. (BTW should be Modify menu above; I was thinking, "wtf version do I have??" :laugh:)

 

Yeah, every other software on this planet calls this menu the "edit" menu for some reason.... :ph34r:

 

I am currently recompiling a release version, will check once it is done compiling if it still happens. Then I might try an attach with gdb... (full compile seems to take at least half an hour with my Übersystem....)

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

Yeah, every other software on this planet calls this menu the "edit" menu for some reason.... :ph34r:

 

I am currently recompiling a release version, will check once it is done compiling if it still happens. Then I might try an attach with gdb... (full compile seems to take at least half an hour with my Übersystem....)

 

Ok, the good news is, it also happens in a release build. The even better news is, I got a backtrace (sorry for not doing this first :)

 

#0  0x00002ad56af8a8c6 in poll () from /lib/libc.so.6
#1  0x00002ad566e966ae in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00002ad566e96b6a in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#3  0x00002ad567588023 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#4  0x000000000063836d in main (argc=1, argv=0x7fff44063ad8) at radiant/main.cpp:352

 

So it hangs in libc in poll() - also explains why it doesn't us an CPU while hanging.

 

Next I'll try to run it under strace to see what it tries to poll or open.

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

strace (the last bits):

 

open("/home/te/src/darkmod/darkradiant/install/bitmaps/arrow_right.png", O_RDONLY) = 25
fstat(25, {st_mode=S_IFREG|0644, st_size=2876, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaab4cdc000
read(25, "\211PNG\r\n\32\n\\rIHDR\\5\\v\10\6\\"..., 4096) = 2876
lseek(25, 0, SEEK_SET)				  = 0
read(25, "\211PNG\r\n\32\n\\rIHDR\\5\\v\10\6\\"..., 4096) = 2876
close(25)							   = 0
munmap(0x2aaab4cdc000, 4096)			= 0
write(19, "pasteShaderToSelection\n", 23) = 23
write(3, "\22\7C\'\240\2\f\2\!\ \377\377\1\F\'"..., 384) = 384
read(3, 0x7fff7cef1cc0, 32)			 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\34\357\327\363C\'\240\2\f\2\\304\276\320\\335\273"..., 32) = 32
read(3, "\1\30\346\363\\V\1\\\\364\5?\2\\<"..., 32) = 32
write(3, "8\7\32\240\200\6\\\\\\\\"..., 424) = 424
read(3, 0x7fff7cef1e40, 32)			 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\1\30\373\363\\V\1\\\d\37\\<\231"..., 32) = 32
write(3, ">\7J\'\240\2G\'\240\2\32\240\2\\\4\1\3d\"..., 408) = 408
read(3, "\1\30\20\364\\V\1\\\a\37\\<\231"..., 32) = 32
write(3, ">\7L\'\240\2G\'\240\2\32\240\2\\\243\3\"..., 396) = 396
read(3, "\1\30%\364\\V\1\\\Q\37\\<\231"..., 32) = 32
write(3, ">\7N\'\240\2G\'\240\2\32\240\2\\R\3Q\"..., 672) = 672
read(3, "\1\30E\364\\V\1\\\R\37\\<\231"..., 32) = 32
write(3, ">\7P\'\240\2G\'\240\2\32\240\2\\\\3R\"..., 1476) = 1476
read(3, "\1\214\364\\\1\\\\274\366\270\1\"..., 32) = 32
sched_yield()						   = 0
(line repeated a few thousand times)
sched_yield()						   = 0
write(3, "C\7\357\10\240\2\314\v\240\2\M\3\\\M\3"..., 44) = 44
read(3, 0x7fff7cef28c0, 32)			 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\1\216\364\\\1\\\\200\27e\3\\"..., 32) = 32
write(3, "C\7\272\10\240\2\315\v\240\2\S\3\\\S\3"..., 208) = 208
read(3, "\1\30\230\364\\V\1\\\\203\31\34\\"..., 32) = 32
write(3, "8\7\32\240\200\6\317\377\377\377\377\377\377"..., 688) = 688
poll(

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

It hangs in libc? Isn't that a pretty low-level OS library? DarkRadiant isn't even involved in this stack.

 

Used "bt" in gdb to get the backtrace, but I have no idea if it is actually correct. Does the strace help you?

 

Btw, I still had he hanging DR open in the background, and it just made an autosave. So it is still alive, somehow, but no longer updating its GUI. Huh?

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

It hangs in libc? Isn't that a pretty low-level OS library? DarkRadiant isn't even involved in this stack.

 

Look again, line #4 :)

 

#4  0x000000000063836d in main (argc=1, argv=0x7fff44063ad8) at radiant/main.cpp:352

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

Look again, line #4 :)

 

#4  0x000000000063836d in main (argc=1, argv=0x7fff44063ad8) at radiant/main.cpp:352

Well, of course the program has to start somewhere, and this is of course main(). If it would hang earlier, you wouldn't see anything at all.

 

In main(), DarkRadiant invokes the GTK "main loop" which will wait for any mouse and keyboard events, which are relayed to DarkRadiant's signal handlers (i.e. the EventManager). It seems a bit strange that it is hanging in a C-Runtime lib.

Link to comment
Share on other sites

Looks like a system/GTK installation problem, perhaps related to 32 versus 64-bit Ubuntu. I don't see any DarkRadiant code in that backtrace (apart from the obvious main()).

 

Ok, just to make sure it is not related to my 64 Bit system, I checked out and compiled DR on my laptop, and the same hang appears:

 

* start DR

* Open map "test/stack.map"

* select a face (Shift+CTRL+LMB)

* Use "copy shader"

* press ESC

* select a brush

* use "paste shader"

* hang:

 

post-144-1202424378_thumb.jpg

 

The face I copied the shader from was the one just above this brush. You can see in the screenshot that the menu is still half visible and some regions are not updated.

 

My Laptop is:

 

* 32 bit

* Intel dual-core T2080 @ 1.73GHz

* Ubuntu 7.10

* gcc 4.1.3

* Graphic: Intel 945

 

My main PC is:

 

* 64 bit

* AMD Dual-Core 2.6 Ghz (can't look right now at exact name)

* Ubuntu 7.04

* gcc from that Ubuntu

* Graphic: Nvidia 7600GS

 

So right now I am at loss what that could be. Would it help if I post an "ldd" output?

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

If OrbWeaver can't reproduce it, I can try to do so over the weekend. However, if the hang is happening somewhere in libc, I doubt that I can do anything about it.

 

I guess DR is using threads, and maybe it's a resource lock problem. How can I try to get a better trace with gdb in the case of threads?

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

If OrbWeaver can't reproduce it, I can try to do so over the weekend. However, if the hang is happening somewhere in libc, I doubt that I can do anything about it.

 

I cannot reproduce it, the listed operations appear to work fine on my Linux system.

Link to comment
Share on other sites

I cannot reproduce it, the listed operations appear to work fine on my Linux system.

 

Could it be the dual-core CPUs I have?

 

Hm, or maybe it is the configuration of DR?

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent Status Updates

    • taffernicus

      i am so euphoric to see new FMs keep coming out and I am keen to try it out in my leisure time, then suddenly my PC is spouting a couple of S.M.A.R.T errors...
      tbf i cannot afford myself to miss my network emulator image file&progress, important ebooks, hyper-v checkpoint & hyper-v export and the precious thief & TDM gamesaves. Don't fall yourself into & lay your hands on crappy SSD
       
      · 3 replies
    • OrbWeaver

      Does anyone actually use the Normalise button in the Surface inspector? Even after looking at the code I'm not quite sure what it's for.
      · 7 replies
    • Ansome

      Turns out my 15th anniversary mission idea has already been done once or twice before! I've been beaten to the punch once again, but I suppose that's to be expected when there's over 170 FMs out there, eh? I'm not complaining though, I love learning new tricks and taking inspiration from past FMs. Best of luck on your own fan missions!
      · 4 replies
    • The Black Arrow

      I wanna play Doom 3, but fhDoom has much better features than dhewm3, yet fhDoom is old, outdated and probably not supported. Damn!
      Makes me think that TDM engine for Doom 3 itself would actually be perfect.
      · 6 replies
    • Petike the Taffer

      Maybe a bit of advice ? In the FM series I'm preparing, the two main characters have the given names Toby and Agnes (it's the protagonist and deuteragonist, respectively), I've been toying with the idea of giving them family names as well, since many of the FM series have named protagonists who have surnames. Toby's from a family who were usually farriers, though he eventually wound up working as a cobbler (this serves as a daylight "front" for his night time thieving). Would it make sense if the man's popularly accepted family name was Farrier ? It's an existing, though less common English surname, and it directly refers to the profession practiced by his relatives. Your suggestions ?
      · 9 replies
×
×
  • Create New...