The "IT DOESN'T WORK!" thread

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

User avatar
SpitValve
Not a mod.
Posts: 5115
Joined: Tue Sep 26, 2006 9:51 am UTC
Location: Lower pork village

The "IT DOESN'T WORK!" thread

Postby SpitValve » Wed Apr 11, 2007 4:45 am UTC

You know you're in a tough spot when you print out your entire 1700 line program in order to go through it line by line...

Dammit, why won't you atoms go into the interstitual sites like you're supposed to?

Post your frustrations and inadequencies at programming...

LE4dGOLEM SAYS: Stickied for being a good idea.

User avatar
OmenPigeon
Peddler of Gossamer Lies
Posts: 673
Joined: Mon Sep 25, 2006 6:08 am UTC
Contact:

Postby OmenPigeon » Wed Apr 11, 2007 5:42 am UTC

I handed in a large assignment about a week ago, with large parts of it not working. Due dates and other work and GODDAMN FRIGGIN' C conspired to just not let me finish.

I was somewhat surprised, then, when I got my grade back and discovered that I lost 4 points out of 100... for a part of the program I'm certain I had working. And no mention of the other parts which I hadn't even implemented.

I suspect the intervention of machine elves in the submission system.
As long as I am alive and well I will continue to feel strongly about prose style, to love the surface of the earth, and to take pleasure in scraps of useless information.
~ George Orwell

User avatar
Andrew
Posts: 619
Joined: Tue Jan 02, 2007 9:59 pm UTC
Location: Manchester, UK
Contact:

Postby Andrew » Wed Apr 11, 2007 10:24 am UTC

Never trust atoms. Or things made of atoms.

User avatar
SpitValve
Not a mod.
Posts: 5115
Joined: Tue Sep 26, 2006 9:51 am UTC
Location: Lower pork village

Postby SpitValve » Wed Apr 11, 2007 11:07 am UTC

Only trust Dark Matter

Edit: Non-baryonic Dark Matter, that is. MACHOS still have atoms...

User avatar
SpitValve
Not a mod.
Posts: 5115
Joined: Tue Sep 26, 2006 9:51 am UTC
Location: Lower pork village

Postby SpitValve » Thu Apr 12, 2007 10:53 pm UTC

sweet, stickied :)

I spent all my time playing on my new laptop instead of debugging, so I've progressed no further...

Nentuaby
Posts: 15
Joined: Mon Dec 11, 2006 5:57 am UTC

Postby Nentuaby » Fri Apr 13, 2007 3:02 am UTC

So I recently completed a 10 week project course, the object of which was to create a just-in-time compiler. When I turned it in, after essentially burning myself out, it was utterly incapable of compiling anything.

I got a B+! Hooray, partial credit.

(The language to be executed was a Java subset, and we were writing C/C++... I got the grade for optionally starting from scratch on the interpreter portion, which incidentally made a very nice disassembler thanks to my architecture, and printing out the traces that would have been compiled.)

User avatar
Rey
Posts: 144
Joined: Sat Feb 24, 2007 10:04 pm UTC
Location: This Space for Rent

Postby Rey » Fri Apr 13, 2007 5:48 am UTC

OmenPigeon wrote:... I I lost 4 points out of 100...


Did you use any code that your instructor wouldn't be able to understand? That once worked to my advantage.

User avatar
SpitValve
Not a mod.
Posts: 5115
Joined: Tue Sep 26, 2006 9:51 am UTC
Location: Lower pork village

Postby SpitValve » Fri Apr 13, 2007 12:29 pm UTC

Often the markers are only a few years ahead of you, so if the mistakes you've made aren't the obvious ones you might get away with it :)

User avatar
evilbeanfiend
Posts: 2650
Joined: Tue Mar 13, 2007 7:05 am UTC
Location: the old world

Postby evilbeanfiend » Fri Apr 13, 2007 12:43 pm UTC

SpitValve wrote:Often the markers are only a few years ahead of you, so if the mistakes you've made aren't the obvious ones you might get away with it :)


equally though if the solution isn't obviously correct it can some times be marked down even if it does work.
in ur beanz makin u eveel

User avatar
Daem0hn
Posts: 324
Joined: Wed Feb 14, 2007 2:28 pm UTC
Location: Perth, Western Australia (IATA: PER)
Contact:

Postby Daem0hn » Fri Apr 13, 2007 1:26 pm UTC

way way back in first year a project was to write a text-based calculator in C++.

So, i busted out the program in a day maybe two using the STL stack implementation to do infix -> postfix conversion and statement execution. (then i got bored so added support for trig functions, square roots, absolute values and added constants eg e and pi)

anyway, the next assignment was to convert our C++ code into C.

so i hacked away and wrote a stack implementation in C, fairly easy, took me a few hours to iron out all the bugs (keep in mind i'd only learnt about pointers the day before :P). Tested every minute detail of the stack, and it all worked perfectly :D hoorah.

I implement the remainder of my program using this stack that i programmed.
It works perfectly, except for when i tried to compute any statement containing x*6 (eg (1*10^3+5)/(x*6))
it worked perfectly fine for statements containing 6*x (eg (1*10^3+5)/(6*x)) (where x is an element of the reals and where 6*x is within the bounds of a C double).


After spending a day tracing through the program in GDB i found that upon doing an x*6 calc, for some strange reason, it would always reset the 2nd bottom stack item to 0 when the 6 was popped from the stack (dont ask me why, to this day i have not got a clue).

Eventually i gave up on the problem and was looking through my code for any final revisions i could make. I noticed that id malloced some memory and not freed it, so i freed it up at the end of the program. Compiled, Ran one last test, decided to test the x*6 problem, and it worked :shock:

The memory i freed had _nothing_ to do with the stack, nor to do with the numeric processing. It was to hold some random snippet of user information so i have no idea why freeing it up fixed me problem.


So in conclusion: C, crazy stuff.
01 01 was a race horse, 10 10 was 01 10, 01 01 01 01 race, 10 10 01 01 10

-- Mike (19/Male)

User avatar
evilbeanfiend
Posts: 2650
Joined: Tue Mar 13, 2007 7:05 am UTC
Location: the old world

Postby evilbeanfiend » Fri Apr 13, 2007 1:58 pm UTC

ya, valgrind makes it just about palatable to debug that sort of thing.
in ur beanz makin u eveel

User avatar
Daem0hn
Posts: 324
Joined: Wed Feb 14, 2007 2:28 pm UTC
Location: Perth, Western Australia (IATA: PER)
Contact:

Postby Daem0hn » Fri Apr 13, 2007 4:14 pm UTC

^ sweet, looks pretty useful, will definitely try it out next time i get stuck
(although now i'm further along my course the subjects are less about coding :( and more about theory :( )
01 01 was a race horse, 10 10 was 01 10, 01 01 01 01 race, 10 10 01 01 10

-- Mike (19/Male)

Rysto
Posts: 1457
Joined: Wed Mar 21, 2007 4:07 am UTC

Postby Rysto » Fri Apr 13, 2007 6:12 pm UTC

Don't they actually compile and run your code to mark it? That makes it pretty obvious whether you knew what you were doing or not.

EvanED
Posts: 4303
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Postby EvanED » Fri Apr 13, 2007 8:35 pm UTC

Rysto wrote:Don't they actually compile and run your code to mark it? That makes it pretty obvious whether you knew what you were doing or not.


If you're responding to the post about markers only being a little older, I'll agree with that post. You can get an idea of whether the code knew what they were doing, but there can be some subtle bugs that the grader may not think to check for.

One of the assignments in the intro class at my undergrad university was to take an implementation of a singly-linked list in C++ and make it doubly-linked. But the singly-linked list was buggy (not in a way that affected the assignment at all though); it had an operator= but didn't check for self-assignment, so doing "a = a;" cleared the list a. I did this assignment freshman year, then came back to essentially TA the class my senior year, which is when I discovered the bug. I don't think the instructor knew about it before then, which meant it had been there four years.

Something like that I wouldn't take off for in an assignment unless either the book or class cautioned against that bug, but if I thought of it, I would check for it and make notes.

Rysto
Posts: 1457
Joined: Wed Mar 21, 2007 4:07 am UTC

Postby Rysto » Fri Apr 13, 2007 9:29 pm UTC

Yeah, I can see them missing little bugs, but when the vast majority of your code just doesn't work? How do you miss that?

EvanED
Posts: 4303
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Postby EvanED » Fri Apr 13, 2007 10:15 pm UTC

Rysto wrote:Yeah, I can see them missing little bugs, but when the vast majority of your code just doesn't work? How do you miss that?


That I have no clue about. I think that's less of a "the grader is not much older than you" and more of a "the grader shouldn't be grading" ;-)

User avatar
OmenPigeon
Peddler of Gossamer Lies
Posts: 673
Joined: Mon Sep 25, 2006 6:08 am UTC
Contact:

Postby OmenPigeon » Fri Apr 13, 2007 11:07 pm UTC

They definitely compiled and ran the code; part of the feedback we get with our grade is the output from their test script. I have no idea how the TA managed to not notice my program crashing repeatedly, though.
As long as I am alive and well I will continue to feel strongly about prose style, to love the surface of the earth, and to take pleasure in scraps of useless information.

~ George Orwell

User avatar
grim4593
Posts: 115
Joined: Tue Aug 22, 2006 1:23 am UTC

Postby grim4593 » Mon Apr 16, 2007 4:20 am UTC

Talking about frustrating "it doesn't work" coding...
Right now I am trying to make a digital thermometer out of a PIC microcontroller, an analog temperature chip, and two 7447's with three 7 segment displays. I got the circuit built and the display working for any number between -128 to 127, but now I hit a roadblock using the built in A/D converter! GAH!
Of course, they had to make the conversion a 10 bit result on an 8 bit microcontroller... Ah well, I will probably figure it out in the next week.
This isn't a school assignment either...

User avatar
SpitValve
Not a mod.
Posts: 5115
Joined: Tue Sep 26, 2006 9:51 am UTC
Location: Lower pork village

Postby SpitValve » Mon Apr 16, 2007 5:46 am UTC

Out of interest, what do you code the microcontroller in? Assembly or C?

iw
Posts: 150
Joined: Tue Jan 30, 2007 3:58 am UTC

Postby iw » Mon Apr 16, 2007 5:49 am UTC

Here's something that happens at bizarre times at work:

I'm using PHP and occasionally a page will return a completely blank page. When I go in and check each page for errors, I don't find anything. But for some unknown reason, if I go in and re-save an included file without changing the contents at all, it starts working. What the hell?

User avatar
SpitValve
Not a mod.
Posts: 5115
Joined: Tue Sep 26, 2006 9:51 am UTC
Location: Lower pork village

Re: The "IT DOESN'T WORK!" thread

Postby SpitValve » Mon Apr 16, 2007 11:38 pm UTC

SpitValve wrote:Dammit, why won't you atoms go into the interstitual sites like you're supposed to?


Quoting myself just to let you know that the atoms are behaving themselves for now and are happily sitting in interstitual sites. That'll learn them!

User avatar
grim4593
Posts: 115
Joined: Tue Aug 22, 2006 1:23 am UTC

Postby grim4593 » Tue Apr 17, 2007 1:29 am UTC

SpitValve wrote:Out of interest, what do you code the microcontroller in? Assembly or C?


Assembly. I know basic C as well, but I haven't gotten around to using it to program the microcontrollers. Looking around the net, i have seen some people call the C used to program PIC's as "bastardized".

Call me weird, but I actually like assembly...

User avatar
aldimond
Otter-duck
Posts: 2665
Joined: Fri Nov 03, 2006 8:52 am UTC
Location: Uptown, Chicago
Contact:

Postby aldimond » Tue Apr 17, 2007 6:14 am UTC

For doing reasonably simple things on machines where you can't really expect the compiler to follow the standards of C exactly (with respect to things like moduli, rounding, etc.) I'd rather use assembly. This was the case when I took a class programming DSPs in college. The C compiler for those things put the processor in a different mode so that it would handle arithmetic in a more C-like way and all the values were expressed as signed shorts, but you had to write all your C code thinking about the processor in order to get the expected result. Of course, what that really means is that the C compiler is not a proper C compiler. But assembly was really the most logical way to program those things.

Man, those DSPs were fun to program... they were pipelined with no interlocking, so you could cleverly fill delay slots in branch instructions and stuff like that.
One of these days my desk is going to collapse in the middle and all its weight will come down on my knee and tear my new fake ACL. It could be tomorrow. This is my concern.

User avatar
OmenPigeon
Peddler of Gossamer Lies
Posts: 673
Joined: Mon Sep 25, 2006 6:08 am UTC
Contact:

Postby OmenPigeon » Thu Apr 19, 2007 5:39 am UTC

So I have to create a file in C. Not a big problem. I write the following:

Code: Select all

open("filename", O_CREAT|O_WRONLY, 0755)

Simple enough. Only after the program runs and I go to check that the file has the right stuff written to it, I can't open it. I check the permissions and, huh, there are none. No one has any permission to do anything to the file.

So I try some stuff, look at some example code, and finally come up with this:

Code: Select all

open("filename", O_WRONLY|O_CREAT, 0755)

And it works! Yes, thats right, changing the order in which I or-ed the flags was the problem. How does that make sense?
As long as I am alive and well I will continue to feel strongly about prose style, to love the surface of the earth, and to take pleasure in scraps of useless information.

~ George Orwell

User avatar
necroforest
Posts: 195
Joined: Tue Apr 10, 2007 3:46 pm UTC
Contact:

Postby necroforest » Thu Apr 19, 2007 4:38 pm UTC

OmenPigeon wrote: Yes, thats right, changing the order in which I or-ed the flags was the problem. How does that make sense?


Sounds like a compiler bug to me...

User avatar
FiddleMath
Posts: 245
Joined: Wed Oct 11, 2006 7:46 am UTC
Location: Madison, WI
Contact:

Postby FiddleMath » Fri Apr 20, 2007 7:26 am UTC

OmenPigeon wrote:Yes, thats right, changing the order in which I or-ed the flags was the problem. How does that make sense?


Well, O_RDONLY and O_WRONLY are macros; depending on the implementation, they could be more complicated expressions than just single-bit numbers. (On the other hand, if this is the GNU C libs, this should work fine.) For full POSIX-fitness, use O_RDWR instead.

EvanED
Posts: 4303
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Postby EvanED » Fri Apr 20, 2007 3:35 pm UTC

FiddleMath wrote:
OmenPigeon wrote:Yes, thats right, changing the order in which I or-ed the flags was the problem. How does that make sense?


Well, O_RDONLY and O_WRONLY are macros; depending on the implementation, they could be more complicated expressions than just single-bit numbers. (On the other hand, if this is the GNU C libs, this should work fine.) For full POSIX-fitness, use O_RDWR instead.


I'm surprised that POSIX wouldn't guarantee that they would behave properly in the face of | though. But I guess that would be less surprising than a compiler bug that did that...

You could always figure out what it expands to and see. Actually, I'd be curious about that...

evildave
Posts: 77
Joined: Wed Apr 25, 2007 3:52 am UTC

Postby evildave » Thu Apr 26, 2007 3:56 am UTC

I hate tracking a 'software bug' down to a hardware problem.

It's like a whole day of my life has been ripped away.

Sometimes more than one day.


I have really come to hate... well, everybody.

I've got to learn NOT TO give computers and old equipment to people I know. They always want lifetime service with FREE PARTS to be thrown in with the deal.

"The computer's broken!"
"What's wrong with it?"
"You have to come see!"
(Drop everything, come to see...)
"See, I can log into every site on the internet, but I can't log into THIS one!"
(Under my breath, bad words begin to form.)
"And when you can't get channel 7, is your TV broken?"
"They're always fuzzy, and what's that have to do with anything?"
"Never mind. Have you contacted {people who run web site}?"
"No. I wanted to ask you."
"Well, it's THEIR stuff that's down."
"Oh, wait, I got an email about 'down for planned maintenance'..."
"Super."

User avatar
Strilanc
Posts: 646
Joined: Fri Dec 08, 2006 7:18 am UTC

Postby Strilanc » Sun May 06, 2007 11:56 pm UTC

I once wrote a simple key generator in visual basic for my work. It was very simple, only meant to stop casual attempts to break in, but it had one serious flaw: the output CHANGED WHEN YOU COMPILED IT (vb has an interpreter). This is ABSOLUTELY unacceptable: it puts debugging in the interpreter to question.

I eventually solved it by changing one of the larger constants. Presumably the interpreter did something different than the compiler with large constants. Once I'd figured out what went wrong I started chopping non-bug related code in an attempt to minimize the number of lines to pull off the bug. I think I ended up with 4-5 before I went back to work.
Don't pay attention to this signature, it's contradictory.

User avatar
ZoFreX
Posts: 70
Joined: Thu May 10, 2007 11:23 pm UTC
Location: Bristol, UK

Postby ZoFreX » Thu May 10, 2007 11:43 pm UTC

iw wrote:Here's something that happens at bizarre times at work:

I'm using PHP and occasionally a page will return a completely blank page. When I go in and check each page for errors, I don't find anything. But for some unknown reason, if I go in and re-save an included file without changing the contents at all, it starts working. What the hell?

Check the permissions on the file maybe? Also, presumably the server is in the mode where errors are logged, not displayed, so open the error log.

We had a fun one in labs today when demo'ing our program. Realised about 20 seconds before the marker arrived that an Old Bug Of Doom that had long been exiled resurfaced on the machines we were demo'ing on! Luckily it didn't crop up too much, and I apologised in advance attempting to blame the machines (as far as I can tell they're identical to the machines we usually test on, and we've only reproduced the bug on our own machines with out-of-date graphics card drivers). I was still sorely pissed.

User avatar
SpitValve
Not a mod.
Posts: 5115
Joined: Tue Sep 26, 2006 9:51 am UTC
Location: Lower pork village

Postby SpitValve » Mon May 21, 2007 4:47 am UTC

Trying to implement a new potential and it's not conserving momentum and the atoms are all flying off together... not good.

Thought y'all should know :)

User avatar
PS_Mouse
Posts: 300
Joined: Fri May 11, 2007 2:48 am UTC
Location: Brisbane, Australia
Contact:

Postby PS_Mouse » Mon May 21, 2007 6:48 am UTC

At the end of last year I was making a 3D physics engine for one of my programming classes. Near the start of the assignment my lecturer showed me this "cool thing he'd made" which was a physics engine. The nifty thing about it was that instead of constraining the shape of objects by drawing distance constraints from every point to every other point in the object (the usual way to keep the shape of a physics object); it did it by drawing distance and orientation constraints from the center of the object to every point. Now the thing was, the program he showed us was in 2D. The program that we (me and the other guy in the class who was foolish enough to try a physics engine) had to make was 3D. Turns out that our lecturer hadn't attempted that particular method in 3D before.

Initially we figured that wouldn't be too much of a problem...

But it turns out that the math required to constrain the orientation of two points in relation to an arbitrary up vector in 3D space is slightly less than simple. To give you an idea of how less than simple it was: most of the methods we tried involved quaternions; a couple of the methods involved averaging quaternions.

So anyway, the math was worked out (eventually). But there a stumbling block was encountered. Because I'd crash-coursed myself through the workings of quaternions in a week or so and I had only a year or so of C++ under my belt (with no prior programming experience). When it came to debugging the program, I couldn't do it as efficiently as I would have liked. I ended up handing it in a week late (still not working) and changing my major.
I think I used to have a porpoise; then again, that might have been a dream. | Eternal life comes to those who wait
Image
Never forget how the brave Tenzing Norgay outsmarted the evil Edmund Hillary

User avatar
djn
Posts: 607
Joined: Mon May 07, 2007 1:33 pm UTC
Location: Horten, Norway

Postby djn » Mon May 21, 2007 10:24 am UTC

It's a shame I can't remember where the quote is from, but basically:
Debugging is harder than programming. Thus, if you write a program that is as advanced as you can manage, you're not smart enough to debug it.

danderson
Posts: 4
Joined: Mon Jun 04, 2007 3:27 pm UTC

Postby danderson » Mon Jun 04, 2007 3:34 pm UTC

iw wrote:Here's something that happens at bizarre times at work:

I'm using PHP and occasionally a page will return a completely blank page. When I go in and check each page for errors, I don't find anything. But for some unknown reason, if I go in and re-save an included file without changing the contents at all, it starts working. What the hell?


Hey, I know the answer to that one! Your php interpreter is hitting its configured memory limit. When php runs into the memory limit, it helpfully sends back a completely blank page and hangs up. The fun thing is that depending on the memory organization and stuff that php feels like keeping around, the crapping out is non-deterministic.

Boosting the memory limit in php's configuration (location varies depending on operating system and phase of the moon) should make the problem go away (unless your script sucks and is going into a memory grab semi-randomly).

Also, hi all! I just joined, and will probably be mostly lurking.

- Dave, who prefers Python to PHP

User avatar
ZoFreX
Posts: 70
Joined: Thu May 10, 2007 11:23 pm UTC
Location: Bristol, UK

Postby ZoFreX » Mon Jun 04, 2007 3:46 pm UTC

Trying to revise a subject with insufficient lecture notes (and insufficient lecture attendance :oops:) and realising just how obscure it is... Googling the stuff I don't understand typically returns our lecture notes. Yay.

User avatar
SpitValve
Not a mod.
Posts: 5115
Joined: Tue Sep 26, 2006 9:51 am UTC
Location: Lower pork village

Postby SpitValve » Mon Jun 04, 2007 8:43 pm UTC

ZoFreX wrote:Trying to revise a subject with insufficient lecture notes (and insufficient lecture attendance :oops:) and realising just how obscure it is... Googling the stuff I don't understand typically returns our lecture notes. Yay.


If wikipedia or mathworld don't have it, I'd suggest google scholar or arxiv to find some review articles :)

Otherwise, it could be that your lectuer is using obscure terminology. If you post what the topic is here, we might be able to help you out.

e.g. once I was having difficulty finding "Cauchy stress" because most people call it "Cauchy pressure" (or vice versa, I can't remember).

User avatar
ZoFreX
Posts: 70
Joined: Thu May 10, 2007 11:23 pm UTC
Location: Bristol, UK

Postby ZoFreX » Mon Jun 04, 2007 8:56 pm UTC

S'ok, I worked it out. It was a spelling mistake :D

Thanks for the offer though, really appreciated :)

iw
Posts: 150
Joined: Tue Jan 30, 2007 3:58 am UTC

Postby iw » Wed Jun 06, 2007 5:09 am UTC

danderson wrote:Hey, I know the answer to that one! Your php interpreter is hitting its configured memory limit. When php runs into the memory limit, it helpfully sends back a completely blank page and hangs up. The fun thing is that depending on the memory organization and stuff that php feels like keeping around, the crapping out is non-deterministic.

But the fix is entirely deterministic: the problem immediately stops when the file is rewritten to disk.

Maybe the problem has two parts: one where PHP runs out of memory, and somehow our APC cache keeps a blank page in the cache.

User avatar
ZoFreX
Posts: 70
Joined: Thu May 10, 2007 11:23 pm UTC
Location: Bristol, UK

Postby ZoFreX » Fri Jun 08, 2007 9:27 pm UTC

Struggling with pircbot to get it to bloody well autoreconnect! Here's a sampler:

onDisconnect() // Called when the bot disconnects
{
disconnect(); // Just to make sure...
reconnect(); // Throws a "bot already connected error"

Fun, fun, fun.

Rysto
Posts: 1457
Joined: Wed Mar 21, 2007 4:07 am UTC

Postby Rysto » Mon Jun 11, 2007 7:41 pm UTC

Arg. I've just found a bug that was locking up the kernel. Here was the original code that read values out of memory-mapped I/O registers:

Code: Select all

switch(bytes) {
      case 1:
         return *(volatile u_int8_t*)ptr;
      case 2:
         return  *(volatile u_int16_t*)ptr;
      case 4:
         return  *(volatile u_int32_t*)ptr;
   }


Then I saw that need to be grabbing a mutex before doing this operation, so it was changed to:

Code: Select all

   critical_enter();

   switch(bytes) {
      case 1:
         ret = *(volatile u_int8_t*)ptr;
      case 2:
         ret = *(volatile u_int16_t*)ptr;
      case 4:
         ret = *(volatile u_int32_t*)ptr;
   }

   critical_exit();

   return ret;


That, of course, broke *everything*. The kernel would get into some awful state at boot and not even be able to break into a debugger. I was absolutely mystified. The code was so *simple*, and I had copied it from a very similar implementation for a different architecture.

The problem? I forgot to add in breaks for every case in the switch statement. :oops:


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 7 guests