In sys/dev/sysmon/sysmon_power.c we have

        ...
        while ((obj = prop_object_iterator_next(iter)) != NULL) {
                prop_dictionary_remove(ped->dict,
                    prop_dictionary_keysym_cstring_nocopy(obj));
                prop_object_iterator_reset(iter);
        }
        ...

The man-page for prop_dictionary_iterator says in part

        ... Storing to or removing from the dictionary invalidates
        any active iterators for the dictionary.


Doesn't the code-snippet above do exactly what the man-page says should not be done?


I've got a machine that lately has decided to panic in the middle of the night. I finally got a traceback which casts great suspicion on the above code. (Unfortunately I managed to reset the machine before I was able to copy the whole traceback; I have now attached a PS2 keyboard, anticipating the next occurrence.)



-------------------------------------------------------------------------
| Paul Goyette     | PGP Key fingerprint:     | E-mail addresses:       |
| Customer Service | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com    |
| Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette at juniper.net |
| Kernel Developer |                          | pgoyette at netbsd.org  |
-------------------------------------------------------------------------

Reply via email to