MovieClipLoader bug

I’ve noticed that if you close an Internet Explorer
pop-up window while flash is downloading more then 2 items using a
MovieClipLoader class the parent window will refuse to load any
more content from the domain of the flash movie. I can post a
sample if requested.... Is this a known bug?

The components you're having trouble with create their popup
ui in _root.
For example, the list part of the ComboBox is created in
_root. But if _root
doesn't have the necessary assets in its library, that part
of the component
cannot be created. In your case, you can either add all the
components to
library in your topmost movie or use _lockroot to force the
popup parts to
be created in the loaded movie.
Example:
this.createEmptyMovieClip("components_mc",
this.getNextHighestDepth());
var lo:Object = new Object();
lo.onLoadInit = function(target_mc){
target_mc._lockroot = true;
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(lo);
mcl.loadClip("components_mc.swf", components_mc);

Similar Messages

  • Is this a bug? loading component swf with MovieClipLoader

    Guys, one wierdarse 'bug?' for you.
    I have a swf created in Flash 8 Pro, published to Flash 7
    with AS2.0 which contains just a selection of components dragged
    from the standard library (date chooser, date field, combo bog,
    radio button ,number list etc)
    This swf is then loaded dynamically into a second fairly
    straight foward swf - created in Flash 8 Pro, published for Flash 8
    with AS2.0 using MovieClipLoader
    The error:
    When the first component is run on it's own, in flash, in
    html etcetc all components work fine.
    But when loaded into the 2nd swf all components work fine
    APART from those containing some type of popup class (i'm guessing
    here as don't know the inside of the components)
    The two i've encountered which don't work are : Date field -
    the click of the button, and comboBox
    boxth of which ar eactive as they highlight in the standard
    Flash green - so are active but do nothing when clicked.
    so HELP, anyone know why, know a fix, has any idea what's
    going on.
    regards, Rich

    The components you're having trouble with create their popup
    ui in _root.
    For example, the list part of the ComboBox is created in
    _root. But if _root
    doesn't have the necessary assets in its library, that part
    of the component
    cannot be created. In your case, you can either add all the
    components to
    library in your topmost movie or use _lockroot to force the
    popup parts to
    be created in the loaded movie.
    Example:
    this.createEmptyMovieClip("components_mc",
    this.getNextHighestDepth());
    var lo:Object = new Object();
    lo.onLoadInit = function(target_mc){
    target_mc._lockroot = true;
    var mcl:MovieClipLoader = new MovieClipLoader();
    mcl.addListener(lo);
    mcl.loadClip("components_mc.swf", components_mc);

  • Can't believe the caching bug is STILL there

    Hi,
    I MUST be missing something. It can't be true that this has not been fixed after so many years.
    So well, the problem is, every time you load an external asset or file, say for example using a Loader object or a URLLoader object (the same happened in AS2 with MovieClipLoader, LoadVars, XML.load() etc etc, and even before with loadMovie, etc) - every time you load a file, the Flash Player caches that file, and this is independent from your browser: it is Flash Player's own (and primitive) caching mechanism.
    Whenever you load a file with the same URL again, no matter whether the file has been changed or not, Flash Player will use the cached copy, and there's NO WAY to prevent that - there are a few workaround that I will discuss later but they don't solve the problem completely, besides being terribly combersome.
    Now, the HTTP protocol has a wonderful mechanism to manage the caching of files in an intelligent way, which has been working for years and, I think, was invented even before flash existed, however at least 10 years ago, and it works fine.
    If an HTML page has an IMG tag with an image, for example, and if the browser has already a cached version of the image with that URL, the browser will first ask the server for that file and declare it has a cached version with date xxx; if the server's file is not newer than xxx, then the server replies that the file has not changed and the browser can use its cached version (or insist to redownload it if he wishes). But if the file on the server is newer, the server will reply with the new file, and the browser will NEVER show an obsolete cached version of the image (or whatever file).
    Now, I don't know why, Flash Player was designed in a very primitive way that ignores this whole mechanism provided and standardised by the HTTP protocol. Flash Player will ALWAYS use a cached version of the file if he has one, it won't worry about veryfying whether it is obsolete or not.
    So, unless the user clears its cache, whenever you update an xml, txt, jpg or whatever file that is loaded within your flash application, users that have previously visited the page may still see the old version.
    Now, there's an easy workaround for ensuring that a cached version of the file is NEVER used, which is appending a "?somerandomname="+n to the filename, where n is obtained for example as n=(new Date()).value(); in order to ensure that it is always different.
    This way, the complete url of the file is always different and the cached version will never be used.
    However, this is not a solution either. For small text files it is ok, but for images and swf's for example, you DO want the cached file to be used IF it is not obsolete. Otherwise, returning visitors will always have to wait for the complete download time of everything, including files that have been downloaded yesterday and have not been modified.
    So, this problem has been solved ages ago by the HTTP protocol, but the Flash Player is naive and ignores it.
    I used to use 2 workarounds: the one I have mentioned for small files (texts, xml's), and the following one for files that can be updated every once in a while:
    In the main html page, I append "?lastupdate=dddddd" to the swf name, where dddddd is a manually edited date of the last time something relevant has been updated. So for example:
    <object ....... etc etc> <param name="movie" value="mainswffile.swf?lastupdate=20090625"/>... <embed etc etc etc src="mainswffile.swf?lastupdate=20090625"/></object>
    Or something like that.
    When I update some of the files that are to be loaded, I manually edit the "lastupdate" thing in the html.
    Then in the ActionScript programming I use the _root.lastupdate variable to append to the filenames of images or assets I load.
    All this is horribly cumbersome and error-prone. Image you deploy a website to a client that will be able to update his own texts and images: you have either to explain him how to edit the html file also, or create some complicated server-side or client-side script to manage the cache-avoiding system. That is, reinventing the wheel, in this case the cache.
    Every time a new version of the player was released, I expected it to fix the stupid caching problem and to make my cumbersome tricks obsolete and unnecessary.
    I expected to see that the new version would make proper use of HTTP caching protocol specifications, and use cached files ONLY when they are not outdated, after verifying it with the server according to the HTTP protocol.
    Every new version of the player was a disappointment.
    Then I hope the new version of the language, Action Script 3.0, would fix this.
    No, it seems it doesn't.
    I've done some tests with AS3 and with my great and sad surprise, the caching "bug" is still there.
    Well, the bug, not the "bug": this is a bug proper, because there's no reason why it should work this way.
    So, my question is.
    Maybe am I missing something? Is there a way, by using some method or property of URLLoader, Loader and/or URLRequest, to tell Flash Player to use the cache in an intelligent way? I mean, in a not-astonishingly-stupid way?
    Note that I'm not talking about forcing it to NOT USE cache at all: I mean using a cached version when it is appropriate, and redownloading the file when needed, as all decent http application have done for years.
    Perhaps there IS a way to solve this.... It should be the default behaviour and should be transparent, but however, if there is a SERIOUS fix (not a hackaround), that would at least solve the problem.
    Do anybody know of a method that really works?
    (I have read of people trying by using http headers with caching directives but without success; or in the best case maybe they were able to force never-caching, which is NOT a solution as I explained)
    Thanks in advance.
    And if there is any Adobe developer listening, please fix this bug since it is really a shame that an application written in 2008 or 2009 suffers from a problem that was elegantly and definitely solved in the XX century.
    Regards,
    m.

    I wrote a long reply and when I posted it it vanished.
    I had even control+c'opied it before submitting but it didn't even get into my clipboard.
    Shame on this forum (sorry to say that, but that's what I have to say).
    So, I'll try to write it again but it won't be the same: the amount of rage is augmented.
    Thank you BWolfe for letting me know that Flash now (since last year) has a bug management system. It was also such an enormous shame that it didn't have one.
    Adobe used to confuse bug reports with feature requests; now this kind of confusion is still partially there and it is reflected by the voting thing, which is an absolute aberration. In a decent bug management system, the developers take the responsibility to give the bugs the priority they deserve; and no matter how low the priority, even the smallest bug ALWAYS get into the queue.
    Now this bug we are discussing has been well known for AT LEAST EIGHT YEARS and I am not exaggerating at all, as I started using flash in 2001 and the issue was already mentioned here and there in forums etc; probably some blind people didn't see it as a bug (rather as a situation you have to face or work around), but it was known. And the very solution, as I already pointed out, was there even before Flash was conceived (well, for the sake of scientifical rigour, I should say, before Flash was commercialized): the HTTP protocol has the capability to perfectly manage file caching in a manner transparent to the higher layer.
    So, since I don't believe that nobody at Adobe (formerly Macromedia) has heard about a bug that every intermediate-level actionscript developer in the world knows of, it is already kind of a shame that we have to report it in 2009, but that's ok. But that we have to get votes, no, that's an insult.
    Jesus, ActionScript is a programming language, man, A PROGRAMMING LANGUAGE... it is not like Photoshop or Premiere; and it seems like in so many years, people who manage it haven't yet realised it completely.
    Big Brother contestants should be voted. Feature requests may be voted. Bugs cannot be voted should just be fixed one by one as soon as possible.
    Well, sorry for the rant and thank you for the answers.
    Hope this gets through this time.

  • Controlling SWF loaded through MovieClipLoader

    Hello AS gurus,
    I have a two-level site for a portfolio where users can view
    still images and videos for different projects. The top level SWF
    file can be considered as the "parent SWF" and within this file,
    the user navigates by choosing which project he/she wants to
    explore. After choosing, the "parent SWF" loads in a "child SWF"
    via MovieClipLoader of the selected content. It is within this
    "child SWF" that the user can view the various images and videos
    (with sound) of the selected project. To go back out and choose a
    different project, the parent SWF is used and the user navigates to
    and chooses another project.
    The problem is that I can't figure out how to communicate
    from the child SWF to the parent SWF (and vice versa)...well not
    really...this is difficult to explain...hmmm... It would be better
    to explain it with an example...
    If you go to:
    http://www.culshaw.info/junk_drawer/xdin/swf/
    (1) Choose the "Examples" square (when this box zooms up, you
    are presented with a way to navigate to various projects -- this
    SWF that loads as the zoom up happens is what I am calling the
    "parent SWF").
    (2) Choose the second project, labelled "Ford : Ti-VCT" by
    clicking on it (after clicking on the Ford project, the "child SWF"
    is loaded via a MCL from the "parent SWF").
    (3) You can see that the Ford project has 8 images and one
    video that the user can view. Choose the video and ensure that it
    begins to play and hit the mute button so that you hear sound
    (sound is default muted. It is within this "child SWF" that the
    video is NetStream(ed) and the sound is controlled. (there is a bug
    with my code here so you may need to hit play/pause to get the
    video going).
    (4) Now, as the video is playing and you hear sound, click on
    the "Other Examples" button that is located below the video player.
    This button is actually embedded in the the "parent SWF" that
    allows the user to navigate back up to see other projects and not
    in the "child SWF" which contains all of the content. Notice that
    you continue to hear the sound and that the net connection is still
    streaming the video within the "child SWF". I don't want this to
    happen. I want the "parent SWF" to tell the "child SWF" to stop
    streaming and stop all sounds when this "parent SWF" - embedded
    "Other Examples" button is pushed.
    I can't figure out how to do this. Any info that may help
    would be appreciated...
    -john

    Hi,
    It looks to me that the example you are going by has a main
    navigation in the parent swf that is controlling which child movie
    is loaded in and each child swf has its own internal navigation. If
    this is what you are trying to achieve and you are using
    _root.MoveClipName to target things you need to use the lockroot
    code so the flash player knows what root you are talking about.
    Place on the first frame of each Child swf
    this._lockroot = true;
    Hope this helps

  • Bug when save area flash to image on server

    hi all,
    I've a problem when save area flash to image on server (both Win or Linux), but on local (OS: Window) it allaway runs well. I try to find this bug, when user "loadMovie" function it's bug, but i don't use "loadMovie" function it runs well (on Sever)
    source below:
    * Print Button has been clicked
    function print_me(){
        trace("printing...");
        var _loc4 = new flash.display.BitmapData(300,300, false);
        _loc4.draw(this);
        my_mc = _root.snap_mc;
        my_mc.cont_mc.attachBitmap(_loc4, 5, "auto", true);
        my_mc.cont_mc._width = 200;
        my_mc.cont_mc._yscale = my_mc.cont_mc._xscale;
        var _loc2 = new flash.display.BitmapData(my_mc._width, my_mc._height, false);   
        _loc2.draw(my_mc);
        myclr = "";
        for (i = 0; i < _loc2.width; i++)
            for (j = 0; j < _loc2.height; j++)
                clr = _loc2.getPixel(i, j).toString(16); // cannot get color of this pixel when it runs on server(all away return FFFFFF - white) , but on local it runs well
                myclr = myclr + (clr + ",");
            } // end of for
        } // end of for
        var _loc3 = new LoadVars();
        _loc3.w = _loc2.width;
        _loc3.h = _loc2.height;
        _loc3.clr = myclr;
         _root.result_.text    = myclr;
         // send php save image
          _loc3.sendAndLoad("http://example.com/save_image.php", _loc3, "post");
    var mclListener:Object = new Object();
    mclListener.onLoadStart = function(target_mc1:MovieClip) {
       trace("start");
    mclListener.onLoadComplete = function(target_mc1:MovieClip) {
      trace("complete");
    //abc();
    mclListener.onLoadInit = function(target_mc1:MovieClip) {
       trace("onLoadInit");
        // Print when load image completed
        print_me();
    mclListener.onLoadError = function(target_mc1:MovieClip) {
       trace("error");
    var image_mcl:MovieClipLoader = new MovieClipLoader();
    image_mcl.addListener(mclListener);
    _root.mc.loadMovie('http://example.com/box_rose_frame.jpg');
    any body help?
    thanks

    thanks your help.
    I fixed it: if use "loadMovie(url)" function with
    - Url: remote, ex: http://example.com/abc.jpg => errror
    -Url: local, ex: ../../upload/abc.jpg => run well
    it's fixed
    Regard

  • Bug: Cannot attach after failed loadClip

    Hi, this is sort of a bug report unless somebody in this forum can prove me wrong. I've stumbled several times across this problem in my project always scratching my head of this undesirable behavior until i finally decided to create a simpler script to reproduce the problem. Here it goes. If you attempt to load an image into a movie clip and the load fails, you are unable to attach a library movie clip to it. The code below is from the fla file i attached herewith. All you need is a movieclip in your library with linkage name "Attach_MC" and this script in a 1-frame fla file. Or just download the fla file. What i am trying to do is attach a movieclip with a graphic that says "loading failed" if the load fails, so that it won't be blank but i can't do it unless perhaps by a workaround by placing a reserve clip in the same place (i.e. under a mask).
    import mx.utils.Delegate;
    var mcGlobal:MovieClip = this.createEmptyMovieClip("Stage_MC", 0);
    var cLoader:MovieClipLoader = new MovieClipLoader();
    var oListener:Object = new Object();
    oListener.onLoadInit = Delgate.create(this, onLoadSuccess);
    oListener.onLoadError = Delegate.create(this, onErrLoad);
    cLoader.addListener(oListener);
    cLoader.loadClip("intentional_wrong_path", mcGlobal);
    function onLoadSuccess(fSuccess:Boolean):Void {}
    function onErrLoad(mcClip:MovieClip):Void
       trace("Clip: " + mcClip); //Exists = mcGlobal
       var mcNested:MovieClip = mcClip.createEmptyMovieClip("Empty_MC",0);
       trace("Empty_MC: " + mcNested); //Creating Empty MC works
       //But attaching does not work!!! Undefined!!
       var mcAtt1:MovieClip = mcNested.attachMovie("Attach_MC", "Att_MC", 10);
       var mcAtt2:MovieClip = mcClip.attachMovie("Attach_MC", "Att_MC", 10);
       trace("Att1_MC: " + mcAtt1);
       trace("Att2_MC: " + mcAtt2);
    Any responses pertaining to this problem are highly appreciated.

    you're welcome.
    p.s.  there are work-arounds.  you can create parent and child movieclips and use the child for the load-target and the parent for the attachMovie target.  that will work whether there's a load failure or not.

  • Index with "or" clause (BUG still exists?)

    The change log for 2.3.10 mentions "Fixed a bug that caused incorrect query plans to be generated for predicates that used the "or" operator in conjunction with indexes [#15328]."
    But looks like the Bug still exists.
    I am listing the steps to-repro. Let me know if i have missed something (or if the bug needs to be fixed)
    DATA
    dbxml> openContainer test.dbxml
    dbxml> getDocuments
    2 documents found
    dbxml> print
    <node><value>a</value></node>
    <node><value>b</value></node>
    INDEX (just one string equality index on node "value")
    dbxml> listIndexes
    Index: unique-node-metadata-equality-string for node {http://www.sleepycat.com/2002/dbxml}:name
    Index: node-element-equality-string for node {}:value
    2 indexes found.
    QUERY
    setVerbose 2 2
    preload test.dbxml
    query 'let $temp := fn:compare("test", "test") = 0
    let $results := for $i in collection("test.dbxml")
    where ($temp or $i/node[value = ("a")])
    return $i
    return <out>{$temp}{$results}</out>'
    When $temp is true i expected the result set to contain both the records, but that was not the case with the index. It works well when there is no index!
    Result WITH INDEX
    dbxml> print
    <out>true<node><value>a</value></node></out>
    Result WITHOUT INDEX
    dbxml> print
    <out>true<node><value>a</value></node><node><value>b</value></node></out>

    Hi Vijay,
    This is a completely different bug, relating to predicate expressions that do not examine nodes. Please try the following patch, to see if it fixes this bug for you:
    --- dbxml-2.3.10-original/dbxml/src/dbxml/optimizer/QueryPlanGenerator.cpp     2007-04-18 10:05:24.000000000 +0100
    +++ dbxml-2.3.10/dbxml/src/dbxml/optimizer/QueryPlanGenerator.cpp     2007-08-08 11:32:10.000000000 +0100
    @@ -1566,11 +1572,12 @@
         else if(name == Or::name) {
              UnionQP *unionOp = new (&memMgr_) UnionQP(&memMgr_);
    +          result.operation = unionOp;
              for(VectorOfASTNodes::iterator i = args.begin(); i != args.end(); ++i) {
                   PathResult ret = generate(*i, ids);
                   unionOp->addArg(ret.operation);
    +               if(ret.operation == 0) result.operation = 0;
    -          result.operation = unionOp;
         // These operators use the presence of the node arguments, not their valueJohn

  • Bug report follow-up

    is there a way to follow-up on a bug report that i submitted?  i have the bug number, but would like to see if the report was understood, filled out properly and determine the status of the bug report.
    thanks,
    doug

    They comment on bugs if actions were taken. Otherwise - don't expect any feedback.

  • Solaris8 and 9 (possibly 7) /dev/poll driver bug report.

    Hello,
    I'd like to report a bug in the solaris 8 and 9 /dev/poll driver (poll(7d)).
    As i do not have a support account with sun or anything like that, there
    seems to be no other way to do that here (which is of course a very sad
    thing).
    Bug details:
    The /dev/poll device provides an ioctl-request (DP_ISPOLLED) for checking
    if a particular filedescriptor is currently in the set of monitored
    filedescriptors for that particular /dev/poll fd set (open /dev/poll fd).
    A quote from the documentation of the poll(7d) manual page taken from
    Solaris9:
    "DP_ISPOLLED ioctl allows you to query if a file descriptor is already in
    the monitored set represented by fd. The fd field of the pollfd structure
    indicates the file descriptor of interest. The DP_ISPOLLED ioctl returns 1
    if the file descriptor is in the set. The events field contains the
    currently polled events. The revents field contains 0. The ioctl returns 0
    if the file descriptor is not in the set. The pollfd structure pointed by
    pfd is not modified. The ioctl returns a -1 if the call fails."
    It says that when you query for an filedescriptor which is currently being
    monitored in the set, that it would return 1, and change the events field of
    the pollfd structure to the events it's currently monitoring that fd for.
    The revents field would be set to zero.
    However the only thing which actually happens here, is that FD_ISPOLLED
    returns 1 when the fd is in the set and 0 if not. When the fd is in the
    set, when FD_ISPOLLED returns 1, the events field remains unmodified, but
    the revents field gets changed.
    A small sample code to illustrate:
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/devpoll.h>
    main() {
    struct pollfd a;
    int dp_fd = open("/dev/poll", O_WRONLY);
    a.fd = 0; /* stdin */
    a.events = POLLIN; /* we monitor for readability, POLLIN=1 */
    a.revents = 0;
    write(dp_fd, &a, sizeof(a));
    a.fd = 0;
    a.events = 34; /* filled in with bogus number to show malfunctioning */
    a.revents = 0;
    printf("DP_ISPOLLED returns: %d\n", ioctl(dp_fd, DP_ISPOLLED, &a));
    printf("a.fd=%d, a.events=%hd, a.revents=%hd\n", a.fd, a.events,
    a.revents);
    According to the documentation of /dev/poll and namely DP_ISPOLLED this
    program is supposed to print the following:
    DP_ISPOLLED returns: 1
    a.fd=0, a.events=1, a.revents=0
    However it prints the following:
    DP_ISPOLLED returns: 1
    a.fd=0, a.events=34, a.revents=1
    You can take any number instead of '34' and it will simply remain untouched
    after the DP_ISPOLLED ioctl-request.
    I hope it's clear now that the solaris8 and solaris9 (and probably solaris7
    with /dev/poll patch too) DP_ISPOLLED implementation is broken.
    This bug is also easily illustrated by looking at the solaris8 kernel sourcecode:
    <snippet osnet_volume/usr/src/uts/common/io/devpoll.c:dpioctl()>
    case DP_ISPOLLED:
    pollfd_t pollfd;
    polldat_t *pdp;
    if (pollfd.fd < 0) {
    mutex_exit(&pcp->pc_lock);
    break;
    pdp = pcache_lookup_fd(pcp, pollfd.fd);
    if ((pdp != NULL) && (pdp->pd_fd == pollfd.fd) &&
    (pdp->pd_fp != NULL)) {
    pollfd.revents = pdp->pd_events;
    if (copyout(&pollfd, (caddr_t)arg,
    sizeof(pollfd_t))) {
    mutex_exit(&pcp->pc_lock);
    DP_REFRELE(dpep);
    return (set_errno(EFAULT));
    *rvalp = 1;
    </snippet>
    its' clearly visible that the code writes the current monitored events to
    the revents field:
    'pollfd.revents = pdp->pd_events;'
    and that it doesnt set revents to zero.
    It's funny to see that this has been like this since Solaris8 (possibly 7). That means nobody ever used DP_ISPOLLED that way or people were simply to lazy to file a bug report.
    Another funny thing related to this. is that Hewlett-Packard did seem to know about this. Since HP-UX11i version 1.6 they also support /dev/poll. From their manual page i ll quote some sentences from their WARNING session:
    "The ioctl(DP_ISPOLLED) system call also returns its result in the revents member of the pollfd structure, in order to be compatible with the implementation of the /dev/poll driver by some other vendors."
    Hopefully this will get fixed.
    I also like to reexpress my very negative feelings towards the fact that you're not able to file bug reports when you do not have a support contract. Ridiculous.
    Thanks,
    bighawk

    Have I mentioned how much i love my playbook now Great job on os 2.0

  • [bdb bug]repeatly open and close db may cause memory leak

    my test code is very simple :
    char *filename = "xxx.db";
    char *dbname = "xxx";
    for( ; ;)
    DB *dbp;
    DB_TXN *txnp;
    db_create(&dbp,dbenvp, 0);
    dbenvp->txn_begin(dbenvp, NULL, &txnp, 0);
    ret = dbp->open(dbp, txnp, filename, dbname, DB_BTREE, DB_CREATE, 0);
    if(ret != 0)
    printf("failed to open db:%s\n",db_strerror(ret));
    return 0;
    txnp->commit(txnp, 0);
    dbp->close(dbp, DB_NOSYNC);
    I try to run my test program for a long time opening and closing db repeatly, then use the PS command and find the RSS is increasing slowly:
    ps -va
    PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
    1986 pts/0 S 0:00 466 588 4999 980 0.3 -bash
    2615 pts/0 R 0:01 588 2 5141 2500 0.9 ./test
    after a few minutes:
    ps -va
    PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
    1986 pts/0 S 0:00 473 588 4999 976 0.3 -bash
    2615 pts/0 R 30:02 689 2 156561 117892 46.2 ./test
    I had read bdb's source code before, so i tried to debug it for about a week and found something like a bug:
    If open a db with both filename and dbname, bdb will open a db handle for master db and a db handle for subdb,
    both of the two handle will get an fileid by a internal api called __dbreg_get_id, however, just the subdb's id will be
    return to bdb's log region by calling __dbreg_pop_id. It leads to a id leak if I tried to open and close the db
    repeatly, as a result, __dbreg_add_dbentry will call realloc repeatly to enlarge the dbentry area, this seens to be
    the reason for RSS increasing.
    Is it not a BUG?
    sorry for my pool english :)
    Edited by: user9222236 on 2010-2-25 下午10:38

    I have tested my program using Oracle Berkeley DB release 4.8.26 and 4.7.25 in redhat 9.0 (Kernel 2.4.20-8smp on an i686) and AIX Version 5.
    The problem is easy to be reproduced by calling the open method of db handle with both filename and dbname being specified and calling the close method.
    My program is very simple:
    #include <stdlib.h>
    #include <stdio.h>
    #include <sys/time.h>
    #include "db.h"
    int main(int argc, char * argv[])
    int ret, count;
    DB_ENV *dbenvp;
    char * filename = "test.dbf";
    char * dbname = "test";
    db_env_create(&dbenvp, 0);
    dbenvp->open(dbenvp, "/home/bdb/code/test/env",DB_CREATE|DB_INIT_LOCK|DB_INIT_LOG|DB_INIT_TXN|DB_INIT_MPOOL, 0);
    for(count = 0 ; count < 10000000 ; count++)
    DB *dbp;
    DB_TXN *txnp;
    db_create(&dbp,dbenvp, 0);
    dbenvp->txn_begin(dbenvp, NULL, &txnp, 0);
    ret = dbp->open(dbp, txnp, filename, dbname, DB_BTREE, DB_CREATE, 0);
    if(ret != 0)
    printf("failed to open db:%s\n",db_strerror(ret));
    return 0;
    txnp->commit(txnp, 0);
    dbp->close(dbp, DB_NOSYNC);
    dbenvp->close(dbenvp, 0);
    return 0;
    DB_CONFIG is like below:
    set_cachesize 0 20000 0
    set_flags db_auto_commit
    set_flags db_txn_nosync
    set_flags db_log_inmemory
    set_lk_detect db_lock_minlocks
    Edited by: user9222236 on 2010-2-28 下午5:42
    Edited by: user9222236 on 2010-2-28 下午5:45

  • Multiple return values (Bug-ID 4222792)

    I had exactly the same request for the same 3 reasons: strong type safety and code correctness verification at compile-time, code readability and ease of mantenance, performance.
    Here is what Sun replied to me:
    Autoboxing and varargs are provided as part of
    JSRs 14 and 201
    http://jcp.org/en/jsr/detail?id=14
    http://jcp.org/en/jsr/detail?id=201
    See also:
    http://forum.java.sun.com/forum.jsp?forum=316
    http://developer.java.sun.com/developer/earlyAccess/adding_generics/index.html
    Multiple return values is covered by Bug-ID 4222792
    Typically this is done by returning an array.
    http://developer.java.sun.com/developer/bugParade/bugs/4222792.html
    That's exactly the problem: we dynamically create instances of array objects that would better fit well within the operand stack without stressing the garbage collector with temporary Array object instances (and with their backing store: 2 separate allocations that need to be recycled when it is clearly a pollution that the operand stack would clean up more efficiently)
    If you would like to engage in a discussion with the Java Language developers, the Generics forum would be a better place:
    http://forum.java.sun.com/forum.jsp?forum=316
    I know that (my report was already refering to the JSR for language extension) Generics is not what I was refering to (even if a generic could handle multiple return values, it would still be an allocated Object
    instance to pack them, i.e. just less convenient than using a static class for type safety.
    The most common case of multiple return values involve values that have known static datatypes and that should be checked with strong typesafety.
    The simple case that involves returning two ints then will require at least two object instances and will not solve the garbage collection overhead.
    Using a array of variable objects is exactly similar, except that it requires two instances for the components and one instance for the generic array container. Using extra method parameters with Integer, Byte, ... boxing objects is more efficient, but for now the only practical solution (which causes the least pollution in the VM allocator and garbage collector) is to use a custom class to store the return values in a single instance.
    This is not natural, and needlessly complexifies many interfaces.
    So to avoid this pollution, some solutions are used such as packing two ints into a long and returning a long, depacking the long after return (not quite clean but still much faster at run-time for methods that need to be used with high frequencies within the application. In some case, the only way to cut down the overhead is to inline methods within the caller code, and this does not help code maintenance by splitting the implementation into small methods (something that C++ can do very easily, both because it supports native types parameters by reference, and because it also supports inline methods).
    Finally, suppose we don't want to use tricky code, difficult to maintain, then we'll have to use boxing Object types to allow passing arguments by reference. Shamely boxed native types cannot be allocated on the operand stack as local variables, so we need to instanciate these local variables before call, and we loose the capacity to track the cases where these local variables are not really initialized by an effective call to the method that will assign them. This does not help debugging, and is against the concept of a strongly typed language like Java should be:
    Java makes lots of efforts to track uninitialized variables, but has no way to determine if an already instanciated Object instance refered in a local variable has effectively received an effective assignment because only the instanciation is kept. A typical code will then need to be written like this:
    Integer a = null;
    Integer b = null;
    if (some condition) {
    //call.method(a, b, 0, 1, "dummy input arg");
    // the method is supposed to have assigned a value to a and b,
    // but can't if a and b have not been instanciated, so we perform:
    call.method(a = new Integer(), b = new Integer(), 0, 1, "dummy input
    arg");
    // we must suppose that the method has modified (not initialized!)
    the value
    // of a and b instances.
    now.use(a.value(), b.value())
    // are we sure here that a and b have received a value????
    // the code may be detected at run-time (a null exception)
    // or completely undetected (the method() above was called but it
    // forgot to assign a value to its referenced objects a and b, in which
    // case we are calling in fact: now.use(0, 0); with the default values
    // or a and b, assigned when they were instanciated)
    Very tricky... Hard to debug. It would be much simpler if we just used:
    int a;
    int b;
    if (some condition) {
    (a, b) = call.method(0, 1, "dummy input arg");
    now.use(a, b);
    The compiler would immediately detect the case where a and b are in fact not always initialized (possible use bere initialization), and the first invoked call.method() would not have to check if its arguments are not null, it would not compile if it forgets to return two values in some code path...
    There's no need to provide extra boxing objects in the source as well as at run-time, and there's no stress added to the VM allocator or garbage collector simply because return values are only allocated on the perand stack by the caller, directly instanciated within the callee which MUST (checked at compile-time) create such instances by using the return statement to instanciate them, and the caller now just needs to use directly the variables which were referenced before call (here a and b). Clean and mean. And it allows strong typechecking as well (so this is a real help for programmers.
    Note that the signature of the method() above is:
    class call {
    (int, int) method(int, int, String) { ... }
    id est:
    class "call", member name "method", member type "(IILjava.lang.string;)II"
    This last signature means that the method can only be called by returning the value into a pair of variables of type int, or using the return value as a pair of actual arguments for another method call such as:
    call.method(call.method("dummy input arg"), "other dummy input arg")
    This is strongly typed and convenient to write and debug and very efficient at run-time...

    Can anyone give me some real-world examples where
    multiple return values aren't better captured in a
    class that logically groups those values? I can of
    course give hundreds of examples for why it's better
    to capture method arguments as multiple values instead
    of as one "logical object", but whenever I've hankered
    for multiple return values, I end up rethinking my
    strategy and rewriting my code to be better Object
    Oriented.I'd personally say you're usually right. There's almost always a O-O way of avoiding the situation.
    Sometimes though, you really do just want to return "two ints" from a function. There's no logical object you can think of to put them in. So you end up polluting the namespace:
    public class MyUsefulClass {
    public TwoInts calculateSomething(int a, int b, int c) {
    public static class TwoInts {
        //now, do I use two public int fields here, making it
        //in essence a struct?
       //or do I make my two ints private & final, which
       //requires a constructor & two getters?
      //and while I'm at it, is it worth implementing
      //equals(), how about hashCode()? clone()?
      //readResolve() ?
    }The answer to most of the questions for something as simple as "TwoInts" is usually "no: its not worth implementing those methods", but I still have to think about them.
    More to the point, the TwoInts class looks so ugly polluting the top level namespace like that, MyUsefulClass.TwoInts is public, that I don't think I've ever actually created that class. I always find some way to avoid it, even if the workaround is just as ugly.
    For myself, I'd like to see some simple pass-by-value "Tuple" type. My fear is it'd be abused as a way for lazy programmers to avoid creating objects when they should have a logical type for readability & maintainability.
    Anyone who has maintained code where someone has passed in all their arguments as (mutable!) Maps, Collections and/or Arrays and "returned" values by mutating those structures knows what a nightmare it can be. Which I suppose is an argument that cuts both ways: on the one hand you can say: "why add Tuples which would be another easy thing to abuse", on the other: "why not add Tuples, given Arrays and the Collections framework already allow bad programmers to produce unmainable mush. One more feature isn't going to make a difference either way".
    Ho hum.

  • Extensions like Ghostery, WOT or AdBlock stop working after two or three times. Restarting the webpage in a new tab the extensions will work again for several times and then stop again. Has anybody an explanation or a workaround for this bug in Safari 5?

    Extensions like Ghostery, WOT or AdBlock stop working after two or three times. Restarting the webpage in a new tab the extensions will work again for several times and then stop again. Has anybody an explanation or a workaround for this bug in Safari 5?

    Remove the extensions, redownload Safari, reload the extensions.
    http://www.apple.com/safari/download/
    And if you really want a better experience, use Firefox, tons more choices and possibilities there.
    Firefox's "NoScript" will block the Trojan going around on websites. Best web security you can get.
    https://addons.mozilla.org/en-US/firefox/addon/noscript/
    Ghostery, Ad Block Plus and thousands of add-ons more have originated on Firefox.

  • Bug? My events on the iPad iCal app aren't shown in the year view if they are more than two years in the future.

    My events on the iPad iCal app aren't shown in the year view if they are more than two years in the future even though I can see them on the month, week and day view. Any suggestions on how to fix it? I've tried it all. I called the apple support and they checked on their iPads. They all did the same and they couldn't help me. They suggested trying this way. I'd like to be able to plan a few years ahead and the year view would make thing so easy!
    Is this a bug?

    Go to the Home screen and double click the Home button. That will reveal the row of recently used apps at the bottom of the screen. Tap and hold on the app in question until it wiggles and displays a minus sign. Tap the minus sign to actually quit the app. Then tap anywhere on the screen above that bottom row to return the screen to normal. Then restart the app and see if it works normally.
    Then reboot your iPad. Press and hold the Home and Sleep buttons simultaneously ignoring the red slider until the Apple logo appears. Let go of the buttons and let the iPad restart. See if that fixes your problem.

  • HT4528 My IPhone Bugged out/It is currently in the reset mode. I need to exchange all of my contacts from my Yahoo acct. to my new IPHONE. Can you please help me?

    Hello ,
    I purchased my IPHONE about 2 months ago. I am visiting family in DE & this tuesday it starting to go off & on by itself. Then the icons looked like they were floating . Then I could not call or text . The SIRI device would not work. Then it would shut down then the apple icon would reappear. I took it to a verizon dealer in Rehoboth DE & they said it BUGGED OUT/It is in a RESTORE MODE. It will not turn on. We could not transfer anny of my pics or contacts. I never even had a chance to back up the memory on ITUNES.
    The tech @ Verizon said to contact APPLE to trouble shoot and try and transfer the contacts from my yahoo acct.
    Can you please help?
    Gina

    set up your yahoo account in mail, contacts, calendars as an Exchange Account and you should be able to get your contacts from Yahoo from there.

  • ICal bug!

    Didn't know where to post it so I decided to post it here. Not a major bug, but a bug nevertheless. Maybe someone here wants to check it out on their iCal so I get a sense if it is touching just me or anyone else.
    Follow all steps:
    - open iCal in weekly view.
    - click on a day differen than "today".
    - click on "today" on the upper left side (where "today" is written ).
    - click on the red dot to "close the app" without really closing it.
    - reopen iCal by clicking on the icon.
    Now you should have the today button greyed out, no matter which day you choose. The only way to have it back is to close and reopen iCal.
    No data loss, nothing... Just a little bug I found in iCal.
    I run Mac OSX 10.5.4 on a MacBook Pro 17" no plugins, nothing installed. Software is in italian.
    Anyway: others get the same result? (just checked it again to be really sure it is indeed not working, and it's not..)

    Has a real solution to this bug been found yet? It has been on going for me and has become annoying. The only way to get the "today" button and the search feature to work, is to quit iCal and start it again.
    Very annoying.

Maybe you are looking for

  • Data acquisition & state machine

    Hi all, I am working on a project that is capable of data acquisition, analyse, and record processes. I have to acquire data of temperature from 8-32 channels and that of pressure from 7 channels. After analysis, I have 48 outputs. I want to record r

  • Windows says it does not recognize my ipod HELP please

    Had ipod for 3 days. Worked fine. Last time I docked it, gave me an error message saying it was not recognized becuase it was malfuctioning. Reset, restored, re booted, reinstalled itunes, deleted apple auto update, changed ports, you name it. So I t

  • Connecting to SMB server

    Hi, Im running 10.4.8 trying to connect to a server using the Go>connect to server thing. Ive typed in the server nname and protocol correctly which is smb:\\192.xxx.xxx.xxx and the machine tries to connect. Except it THEN puts AFP:\\ in front of wha

  • Locking down Win 8.1

    For security reasons, i need to investigate how to lock down windows 8.1 so that the user is restricted to the desktop only and only has access to a certain few applications. These PC's are in a domain and are used for either Accounting or POS. The s

  • Send form with dynamic fields to guided procedure

    Hi all, i am just wondering if GP is able to map fields from the interactive form that is dynamic. for example, the request invoice form sometimes may contain more than one records. however, with my limited knowledge on GP, i believed mapping can onl