9.0.0 horrendous bug still exists!!!!!!!!!!!

Just reintroducing my pet peeve with Logic in general. It's the one thing that frustrates me most about Logic and it still persists after many many years. Here's my original post from 8.0.2:
http://discussions.apple.com/thread.jspa?threadID=1531297&start=0&tstart=129
The effects and sample caching bug is horrendous in my opinion. It's been there for years. It wastes huge amounts of my time. While there are some things you can do to minimize these glitches, there are NO 100% reliable work arounds. If you work in Logic and want a professional result you absolutely must listen to the finished bounce very carefully for glitches. These glitches come in many forms and will often times only be noticed after you receive the finished product from the mastering house.
The main culprits are:
1. Reverb and delay tails. If you have reverb or delay on a track and you stop playback and move your position, the reverb or delay will begin where it left off.
2. Samples. For example I often replace kicks and snares with samples. When I go to start a bounce random samples will play at the beginning of the track.
3. Clicks from compressor and EQ plug ins. These are less obvious, but generally mastering brings them out loud and clear after it's too late.
Keep in mind that these glitches don't generally happen until a split second before a region starts. That means it is very common for them to happen in the middle of the song. Starting and stopping playback a few times does NOT completely clear the cache.
It's a total craps shoot and the most embarrassing, time wasting aspect of Logic.
I really wish I could trust Logic to give me a bounce that is exactly "as expected."
I just sent a bug report... I encourage you all to do the same. They are obviously working on stuff and I think it's our responsibility to make it a priority for them.
http://www.apple.com/feedback/logicpro.html

lwilliam wrote:
It's an inexcusable bug. It's one of the few reasons left why I can't use it in front of clients. How embarassing to have to trim the beginning of a bounced file to get rid of a reverb tail!
1. If it were truly an AU-only bug, then wouldn't Cubase also exhibit the same behavior? I've not heard of Cubase users complaining about that.
2. If were really an plugin not following the AU spec, then why do these 3rd party plugins pass the validation test?
Since I go way back with this... I can tell you this behavior started with version 4.xx when Emjk adapted Logic to use VST instruments. At that time all of Logic's plugins (reverbs...internal synths) exhibited these problems as well as 3rd party VST. it was a KNOWN issue and had to do with the manner in which Logic handles buffers and and unhooks plugins/AU from the CPU at stop. Plugins, VST & AU become inactive with data in their buffers. It was never a problem with any other DAW as the plugins are kept active long enough to empty the buffers. The onus being put on the plugins was added to the AU spec at a later date to cover Logic's behavior. (which really P.O.'d some plugin developers, so much so that some won't even fix what to them is not their problem.)
I don't know about the latest version of Garageband but interestingly enough, it doesn't exhibit this problem, or if it does, nowhere near as bad as Logic. It was something that was "fixed" in Garageband.
I dislike when companies try and rewrite history, as mentioned, this was a
-known- issue. It was discussed between users and programmers... (back in the day).
over and out on this.
pancenter-

Similar Messages

  • 8.0.2 horrendous bug still exists!!!!!!!!!!!!!

    The effects and sample caching bug is horrendous in my opinion. It's been there for years. It wastes huge amounts of my time. While there are some things you can do to minimize these glitches, there are NO 100% reliable work arounds. If you work in Logic and want a professional result you absolutely must listen to the finished bounce very carefully for glitches. These glitches come in many forms and will often times only be noticed after you receive the finished product from the mastering house.
    The main culprits are:
    1. Reverb and delay tails. If you have reverb or delay on a track and you stop playback and move your position, the reverb or delay will begin where it left off.
    2. Samples. For example I often replace kicks and snares with samples. When I go to start a bounce random samples will play at the beginning of the track.
    3. Clicks from compressor and EQ plug ins. These are less obvious, but generally mastering brings them out loud and clear after it's too late.
    Keep in mind that these glitches don't generally happen until a split second before a region starts. That means it is very common for them to happen in the middle of the song. Starting and stopping playback a few times does NOT completely clear the cache.
    It's a total craps shoot and the most embarrassing, time wasting aspect of Logic.
    I really wish I could trust Logic to give me a bounce that is exactly "as expected."
    I just sent a bug report... I encourage you all to do the same. They are obviously working on stuff and I think it's our responsibility to make it a priority for them.
    http://www.apple.com/feedback/logicpro.html

    Hi Rohan,
    I meant to begin my last post "with all due respect". I read you all the time, you are always well informed, plus you came up with the 8.02 key command fix/discovery..
    Rohan Stevenson1 wrote:
    hi pancentre,
    no mate that's not correct re logic flushing the buffer. that is actually my point - it can't, not the way the audio engine is designed - god, but my memory is sketchy on this - i remember getting the ins and outs of this a long time ago...
    Right, I understand exactly what you're saying, this is indeed the way Logic works... my point was it's an archaic system that was devised at a time when computers had 1/1000th the processing power we have now. There's no need for such great efficiency, plugins can be kept partially active, this is how 9 out of 10 DAWs flush the buffers, the plugin is always active to some extent.
    one of the things that makes logic efficient is the way it handles plugs - it doesn't process them the whole time - only when there is sound to process.
    Agreed, see above. I think this is related to a couple of Logic's other quirks.
    Efficiency in one area is causing less efficiency in other areas, the overload messages. What happens when a song is playing and it comes upon three regions with a couple of space designers and an instance sculpture? Instead of these plugs being partially active and using a little processor, they all become active at once and often cause a spike... ie; system overload or other kind of glitch.
    it is the 3rd party plugs that have to flush its own audio buffer - its not something logic can effect without changing the way it works to become much less efficient.
    but if you were to call it a 'logic bug' then i would find it hard to disagree with you:
    Well, I guess it's hard to say but it seems like Apple came up with a workaround for Logic's behaviour and then asked everyone else to do the same. Until Apple version 7.xx Logic's plugins used to do the reverb tails and all other manner of little tics & glitches.
    There's still a couple of Logic's plugs that aren't all the way compliant.
    pancenter-

  • 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

  • Does the "Warning! Not Enough Memory" bug still exist in Logic 8?

    Hello everyone,
    I'm wondering if the dreaded "warning, not enough memory" bug still exists in Logic 8. Here is a detailed account of the bug from Logic 7: http://discussions.apple.com/thread.jspa?messageID=767597&#767597
    If this is fixed, I'm seriously considering upgrading mid-project! The film score I'm working on has many doubling parts that I'd like to edit at the same time in the matrix editor. However, editing multiple parts in the matrix editor seems provoke the little bugger, and I've already been bitten a few times in this project already. The only solution I've found is to stay clear of editing multiple parts at once (i.e. edit each parts individually, which obviously takes more time) or save before editing and hope I dont get bit.
    I would LOVE to hear a report that this bug has been exterminated, and perhaps may upgrade mid project if thats the case.
    Thanks in advance for your reply!

    Heya,
    I'm not familiar with the bug you're talking about. But would, as a fellow film composer, strongly urge you against the mid project switch.
    I loaded in LP8 and ofcourse had a look at what it was all about, and it's really really fantastic. It also seems very stable. I fortunately have a side project that I am working on so switched to LP8 for that. Whilst I'm thankful to get my head around a very new approach for logic, I'm also thankful that I have this side project as it has illuminated a multitude of problems that exist with LP8 that would make any scoring process a bit of a headache to say the least. The main one being that if you don't have a very very powerful mac (I'm prepping a really fully loaded 8 core) you are not going to get anywhere near the performance out of Logic as you do with 7. This is a bottom up overhaul and it needs hardware to match. Heck even my 30" cinema display seems cramped and insubstantial on this new version. I would be so bold to say hold off until you have a hearty new mac and at least 8.2 is released IMHO but maybe try and get on it onto a smaller project to familiarize yourself before hand.

  • Old kexi bug still exists?

    So I was looking into using something other than phpMyAdmin for editing my databases, so I looked into kexi.  When I used the import "Structure and Data" option, it just populates the tables with empty values.
    After some searching, I found that this use to be an issue a while back: Problem and Resolution.
    Can anyone else confirm this as a still-existing (or reoccurring) bug?
    Or, am I just messing something up along the way?
    Thanks.

    I hope someone can help me... it is very important and i am desperate for answers (BUMP)

  • PDF From MS Word 2010 Reported Bug Still Exists

    I need to create a PDF file today that contains images in a MS Word 2010 document.  There is a bug in Acrobat XI Professional  that I reported months ago.  This bug is still here, and now I need help.  Can anyone tell me what I can do to fix this issue?
    Here is what happens, and I just reproduced this problem I found awhile back.  As I stated, I did report it, but this issue is still here!
    I am creating a user guide for software.  I insert BMP images that are screen shots.  On any page where a BMP image exists within Word, the resulting PDF document does not allow selecting of text in Acrobat Reader XI.  The selection goes totally insane and highlights random text through the entire page.  This is a software defect for certain.
    My question is can I easily fix this with minimal time?  I had to fix this last time by removing all images from MS Word and instead pasting the image in Acrobat XI.  When I do this, selecting text works.  The problem with this bug work-around is that this take lots of time (that I do not have).
    Help please???

    I found something even better.  There is a non Adobe PDF creator on my office computer that correctly creates a PDF.   The issue is within PDF creation, because I am using Acrobat Reader XI and selecting text with no problem at all.
    I did not have to change a thing other than not use Adobe Acrobat Professional to create the PDF.  The software that works correctly where Adobe's own fails is called PDF Xchange Driver by Tracker Software Products LTD.
    ...and as I already stated, I reported this issue many months ago...

  • Black lines in landscape content still exist in v.32.4.4 !!

    Hi
    Adobe should have been fixing this bug in 32.4.4, they did for the Adobe Content viewer.
    But this bug still exists in applications made by DPS App Builder ver 32.4.4.
    Adobe, please make hot fix URGENT
    Thanks
    Eli

    If you rebuild your app with the option "Enable auto hiding of the vertical folio scroll bar" checked this issue will not appear. Will that not work for your app?
    We do plan to release a fix for this on our next scheduled dot release, in approximately a week and a half.

  • The Bug about 'DB_SECONDARY_BAD' still exists in BerkeleyDB4.8!

    The Bug about 'DB_SECONDARY_BAD' still exists in BerkeleyDB4.8?
    I'm sorry for my poor English, But I just cannot find anywhere else for help.
    Thanks for your patience first!
    I'm using BDB4.8 C++ API on Ubuntu 10.04, Linux Kernel 2.6.32-24-generic
    $uname -a
    $Linux wonpc 2.6.32-24-generic #43-Ubuntu SMP Thu Sep 16 14:17:33 UTC 2010 i686 GNU/Linux
    When I update(overwrite) a record in database, I may get a DB_SECONDARY_BAD exception,
    What's worse, This case doesn't always occures, it's random. So I think it probably a bug
    of BDB, I have seen many issues about DB_SECONDARY_BAD with BDB4.5,4.6...
    To reproduce the issue, I make a simplified test program from my real program.
    The data to be stroed into database is a class called 'EntryData', It's defined in db_access.h,
    where also defines some HighLevel API functions that hide the BDB calls, such as
    store_entry_data(), which use EntryData as its argument. The EntryData have a string-type
    member-data 'name' and a vector<string>-type mem-data 'labels', So store_entry_data() will
    put the real data of EntryData to a contiguous memory block. The get_entry_data() returns
    an EntryData builed up from the contiguous memory block fetched from database.
    The comlete test program is post following this line:
    /////////db_access.h////////////
    #ifndef __DB_ACCESS_H__
    #define __DB_ACCESS_H__
    #include <string>
    #include <vector>
    #include <db_cxx.h>
    class EntryData;
    //extern Path DataDir; // default value, can be changed
    extern int database_setup();
    extern int database_close();
    extern int store_entry_data(const EntryData&, u_int32_t = DB_NOOVERWRITE);
    extern int get_entry_data(const std::string&, EntryData*, u_int32_t = 0);
    extern int rm_entry_data(const std::string&);
    class DBSetup
    // 构造时调用database_setup, 超出作用域自动调用database_close .
    // 该类没有数据成员.
    public:
    DBSetup() {
    database_setup();
    ~DBSetup() {
    database_close();
    class EntryData
    public:
    typedef std::vector<std::string> LabelContainerType;
    EntryData() {}
    EntryData(const std::string& s) : name(s) {}
    EntryData(const std::string& s, LabelContainerType& v)
    : name(s), labels(v) {}
    EntryData(const std::string&, const char*[]);
    class DataBlock;
    // 直接从内存块中构建, mem指针将会从数据库中获取,
    // 它就是EntryData转化成的DataBlock中buf_ptr->buf的内容.
    EntryData(const void* mem_blk, const int len);
    ~EntryData() {};
    const std::string& get_name () const { return name; }
    const LabelContainerType& get_labels() const { return labels; }
    void set_name (const std::string& s) { name = s; }
    void add_label(const std::string&);
    void rem_label(const std::string&);
    void show() const;
    // get contiguous memory for all:
    DataBlock get_block() const { return DataBlock(*this); }
    class DataBlock
    // contiguous memory for all.
    public:
    DataBlock(const EntryData& data);
    // 引进一块内存作为 buf_ptr->buf 的内容.
    // 例如从数据库中获取结果
    DataBlock(void* mem, int len);
    // 复制构造函数:
    DataBlock(const DataBlock& orig) :
    data_size(orig.data_size),
    capacity(orig.capacity),
    buf_ptr(orig.buf_ptr) { ++buf_ptr->use; }
    // 赋值操作符:
    DataBlock& operator=(const DataBlock& oth)
    data_size = oth.data_size;
    capacity = oth.capacity;
    if(--buf_ptr->use == 0)
    delete buf_ptr;
    buf_ptr = oth.buf_ptr;
    return *this;
    ~DataBlock() {
    if(--buf_ptr->use == 0) { delete buf_ptr; }
    // data()函数因 Dbt 构造函数不支持const char*而被迫返回 char*
    // data() 返回的指针是应该被修改的.
    const char* data() const { return buf_ptr->buf; }
    int size() const { return data_size; }
    private:
    void pack_str(const std::string& s);
    static const int init_capacity = 100;
    int data_size; // 记录数据块的长度.
    int capacity; // 已经分配到 buf 的内存大小.
    class SmartPtr; // 前向声明.
    SmartPtr* buf_ptr;
    class SmartPtr
    friend class DataBlock;
    char* buf;
    int use;
    SmartPtr(char* p) : buf(p), use(1) {}
    ~SmartPtr() { delete [] buf; }
    private:
    std::string name; // entry name
    LabelContainerType labels; // entry labels list
    }; // class EntryData
    #endif
    //////db_access.cc/////////////
    #include <iostream>
    #include <cstring>
    #include <cstdlib>
    #include <vector>
    #include <algorithm>
    #include "directory.h"
    #include "db_access.h"
    using namespace std;
    static Path DataDir("~/mydict_data"); // default value, can be changed
    const Path& get_datadir() { return DataDir; }
    static DbEnv myEnv(0);
    static Db db_bynam(&myEnv, 0); // using name as key
    static Db db_bylab(&myEnv, 0); // using label as key
    static int generate_keys_for_db_bylab
    (Db* sdbp, const Dbt* pkey, const Dbt* pdata, Dbt* skey)
    EntryData entry_data(pdata->get_data(), pdata->get_size());
    int lab_num = entry_data.get_labels().size();
    Dbt* tmpdbt = (Dbt*) malloc( sizeof(Dbt) * lab_num );
    memset(tmpdbt, 0, sizeof(Dbt) * lab_num);
    EntryData::LabelContainerType::const_iterator
    lab_it = entry_data.get_labels().begin(), lab_end = entry_data.get_labels().end();
    for(int i = 0; lab_it != lab_end; ++lab_it, ++i) {
    tmpdbt[ i ].set_data( (void*)lab_it->c_str() );
    tmpdbt[ i ].set_size( lab_it->size() );
    skey->set_flags(DB_DBT_MULTIPLE | DB_DBT_APPMALLOC);
    skey->set_data(tmpdbt);
    skey->set_size(lab_num);
    return 0;
    //@Return Value: return non-zero at error
    extern int database_setup()
    const string DBEnvHome (DataDir + "DBEnv");
    const string dbfile_bynam("dbfile_bynam");
    const string dbfile_bylab("dbfile_bylab");
    db_bylab.set_flags(DB_DUPSORT);
    const u_int32_t env_flags = DB_CREATE | DB_INIT_MPOOL;
    const u_int32_t db_flags = DB_CREATE;
    rmkdir(DBEnvHome);
    try
    myEnv.open(DBEnvHome.c_str(), env_flags, 0);
    db_bynam.open(NULL, dbfile_bynam.c_str(), NULL, DB_BTREE, db_flags, 0);
    db_bylab.open(NULL, dbfile_bylab.c_str(), NULL, DB_BTREE, db_flags, 0);
    db_bynam.associate(NULL, &db_bylab, generate_keys_for_db_bylab, 0);
    } catch(DbException &e) {
    cerr << "Err when open DBEnv or Db: " << e.what() << endl;
    return -1;
    } catch(std::exception& e) {
    cerr << "Err when open DBEnv or Db: " << e.what() << endl;
    return -1;
    return 0;
    int database_close()
    try {
    db_bylab.close(0);
    db_bynam.close(0);
    myEnv.close(0);
    } catch(DbException &e) {
    cerr << e.what();
    return -1;
    } catch(std::exception &e) {
    cerr << e.what();
    return -1;
    return 0;
    // 返回Dbt::put()的返回值
    int store_entry_data(const EntryData& e, u_int32_t flags)
    int res = 0;
    try {
    EntryData::DataBlock blk(e);
    // data()返回的buf中存放的第一个字符串便是 e.get_name().
    Dbt key ( (void*)blk.data(), strlen(blk.data()) + 1 );
    Dbt data( (void*)blk.data(), blk.size() );
    res = db_bynam.put(NULL, &key, &data, flags);
    } catch (DbException& e) {
    cerr << e.what() << endl;
    throw; // 重新抛出.
    return res;
    // 返回 Db::get()的返回值, 调用成功时 EntryData* e的值才有意义
    int get_entry_data
    (const std::string& entry_name, EntryData* e, u_int32_t flags)
    Dbt key( (void*)entry_name.c_str(), entry_name.size() + 1 );
    Dbt data;
    data.set_flags(DB_DBT_MALLOC);
    int res = db_bynam.get(NULL, &key, &data, flags);
    if(res == 0)
    new (e) EntryData( data.get_data(), data.get_size() );
    free( data.get_data() );
    return res;
    int rm_entry_data(const std::string& name)
    Dbt key( (void*)name.c_str(), name.size() + 1 );
    cout << "to remove: \'" << name << "\'" << endl;
    int res = db_bynam.del(NULL, &key, 0);
    return res;
    EntryData::EntryData(const std::string& s, const char* labels_arr[]) : name(s)
    {   // labels_arr 需要以 NULL 结尾.
    for(const char** i = labels_arr; *i != NULL; i++)
    labels.push_back(*i);
    EntryData::EntryData(const void* mem_blk, const int len)
    const char* buf = (const char*)mem_blk;
    int consumed = 0; // 已经消耗的mem_blk的大小.
    name = buf; // 第一串为 name
    consumed += name.size() + 1;
    for (string label = buf + consumed;
    consumed < len;
    consumed += label.size() + 1)
    label = buf + consumed;
    labels.push_back(label);
    void EntryData::add_label(const string& new_label)
    if(find(labels.begin(), labels.end(), new_label)
    == labels.end())
    labels.push_back(new_label);
    void EntryData::rem_label(const string& to_rem)
    LabelContainerType::iterator iter = find(labels.begin(), labels.end(), to_rem);
    if(iter != labels.end())
    labels.erase(iter);
    void EntryData::show() const {
    cout << "name: " << name << "; labels: ";
    LabelContainerType::const_iterator it, end = labels.end();
    for(it = labels.begin(); it != end; ++it)
    cout << *it << " ";
    cout << endl;
    EntryData::DataBlock::DataBlock(const EntryData& data) :
    data_size(0),
    capacity(init_capacity),
    buf_ptr(new SmartPtr(new char[init_capacity]))
    pack_str(data.name);
    for(EntryData::LabelContainerType::const_iterator \
    i = data.labels.begin();
    i != data.labels.end();
    ++i) { pack_str(*i); }
    void EntryData::DataBlock::pack_str(const std::string& s)
    int string_size = s.size() + 1; // to put sting in buf separately.
    if(capacity >= data_size + string_size) {
    memcpy(buf_ptr->buf + data_size, s.c_str(), string_size);
    else {
    capacity = (data_size + string_size)*2; // 分配尽可能大的空间.
    buf_ptr->buf = (char*)realloc(buf_ptr->buf, capacity);
    memcpy(buf_ptr->buf + data_size, s.c_str(), string_size);
    data_size += string_size;
    //////////// test_put.cc ///////////
    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include "db_access.h"
    using namespace std;
    int main(int argc, char** argv)
    if(argc < 2) { exit(EXIT_FAILURE); }
    DBSetup setupup_mydb;
    int res = 0;
    EntryData ed(argv[1], (const char**)argv + 2);
    res = store_entry_data(ed);
    if(res != 0) {
         cerr << db_strerror(res) << endl;
         return res;
    return 0;
    // To Compile:
    // $ g++ -ldb_cxx -lboost_regex -o test_put test_put.cc db_access.cc directory.cc
    //////////// test_update.cc ///////////
    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <boost/program_options.hpp>
    #include "db_access.h"
    using namespace std;
    namespace po = boost::program_options;
    int main(int argc, char** argv)
    if(argc < 2) { exit(EXIT_SUCCESS); }
    DBSetup setupup_mydb;
    int res = 0;
    po::options_description cmdopts("Allowed options");
    po::positional_options_description pos_opts;
    cmdopts.add_options()
    ("entry", "Specify the entry that will be edited")
    ("addlabel,a", po::value< vector<string> >(),
    "add a label for specified entry")
    ("removelabel,r", po::value< vector<string> >(),
    "remove the label of specified entry")
    pos_opts.add("entry", 1);
    po::variables_map vm;
    store( po::command_line_parser(argc, argv).
    options(cmdopts).positional(pos_opts).run(), vm );
    notify(vm);
    EntryData entry_data;
    if(vm.count("entry")) {
    const string& entry_to_edit = vm["entry"].as<string>();
    res = get_entry_data( entry_to_edit, &entry_data );
    switch (res)
    case 0:
    break;
    case DB_NOTFOUND:
    cerr << "No entry named: \'"
    << entry_to_edit << "\'\n";
    return res;
    break;
    default:
    cerr << db_strerror(res) << endl;
    return res;
    } else {
    cerr << "No entry specified\n";
    exit(EXIT_FAILURE);
    EntryData new_entry_data(entry_data);
    typedef vector<string>::const_iterator VS_CI;
    if(vm.count("addlabel")) {
    const vector<string>& to_adds = vm["addlabel"].as< vector<string> >();
    VS_CI end = to_adds.end();
    for(VS_CI i = to_adds.begin(); i != end; ++i) {
    new_entry_data.add_label(*i);
    if(vm.count("removelabel")) {
    const vector<string>& to_rems = vm["removelabel"].as< vector<string> >();
    VS_CI end = to_rems.end();
    for(VS_CI i = to_rems.begin(); i != end; ++i) {
    new_entry_data.rem_label(*i);
    cout << "Old data| ";
    entry_data.show();
    cout << "New data| ";
    new_entry_data.show();
    res = store_entry_data(new_entry_data, 0); // set flags to zero permitting Over Write
    if(res != 0) {
    cerr << db_strerror(res) << endl;
    return res;
    return 0;
    // To Compile:
    // $ g++ -ldb_cxx -lboost_regex -lboost_program_options -o test_update test_update.cc db_access.cc directory.cc

    ////////directory.h//////
    #ifndef __DIRECTORY_H__
    #define __DIRECTORY_H__
    #include <string>
    #include <string>
    #include <sys/types.h>
    using std::string;
    class Path
    public:
    Path() {}
    Path(const std::string&);
    Path(const char* raw) { new (this) Path(string(raw)); }
    Path upper() const;
    void operator+= (const std::string&);
    // convert to string (char*):
    //operator std::string() const {return spath;}
    operator const char*() const {return spath.c_str();}
    const std::string& str() const {return spath;}
    private:
    std::string spath; // the real path
    inline Path operator+(const Path& L, const string& R)
    Path p(L);
    p += R;
    return p;
    int rmkdir(const string& path, const mode_t mode = 0744, const int depth = -1);
    #endif
    ///////directory.cc///////
    #ifndef __DIRECTORY_H__
    #define __DIRECTORY_H__
    #include <string>
    #include <string>
    #include <sys/types.h>
    using std::string;
    class Path
    public:
    Path() {}
    Path(const std::string&);
    Path(const char* raw) { new (this) Path(string(raw)); }
    Path upper() const;
    void operator+= (const std::string&);
    // convert to string (char*):
    //operator std::string() const {return spath;}
    operator const char*() const {return spath.c_str();}
    const std::string& str() const {return spath;}
    private:
    std::string spath; // the real path
    inline Path operator+(const Path& L, const string& R)
    Path p(L);
    p += R;
    return p;
    int rmkdir(const string& path, const mode_t mode = 0744, const int depth = -1);
    #endif
    //////////////////// All the code is above ////////////////////////////////
    Use the under command
    $ g++ -ldb_cxx -lboost_regex -o test_put test_put.cc db_access.cc directory.cc
    to get a test program that can insert a record to database.
    To insert a record, use the under command:
    $ ./test_put ubuntu linux os
    It will store an EntryData named 'ubuntu' and two labels('linux', 'os') to database.
    Use the under command
    $ g++ -ldb_cxx -lboost_regex -lboost_program_options -o test_update test_update.cc db_access.cc directory.cc
    to get a test program that can update the existing records.
    To update the record, use the under command:
    $ ./test_update ubuntu -r linux -a canonical
    It will update the with the key 'ubuntu', with the label 'linux' removed and a new
    label 'canonical'.
    Great thanks to you if you've read and understood my code!
    I've said that the DB_SECONDARY_BAD exception is random. The same operation may cause
    exception in one time and may goes well in another time.
    As I've test below:
    ## Lines not started with '$' is the stdout or stderr.
    $ ./test_put linux os linus
    $ ./test_update linux -r os
    Old data| name: linux; labels: os linus
    New data| name: linux; labels: linus
    $ ./test_update linux -r linus
    Old data| name: linux; labels: linus
    New data| name: linux; labels:
    dbfile_bynam: DB_SECONDARY_BAD: Secondary index inconsistent with primary
    Db::put: DB_SECONDARY_BAD: Secondary index inconsistent with primary
    terminate called after throwing an instance of 'DbException'
    what(): Db::put: DB_SECONDARY_BAD: Secondary index inconsistent with primary
    已放弃
    Look! I've received a DB_SECONDARY_BAD exception. But thus exception does not always
    happen even under the same operation.
    For the exception is random, you may have not the "luck" to get it during your test.
    So let's insert a record by:
    $ ./test_put t
    and then give it a great number of labels:
    $ for((i = 0; i != 100; ++i)); do ./test_update t -a "label_$i"; done
    and then:
    $ for((i = 0; i != 100; ++i)); do ./test_update t -r "label_$i"; done
    Thus, the DB_SECONDARY_BAD exception is almost certain to happen.
    I've been confused by the problem for times. I would appreciate if someone can solve
    my problem.
    Many thanks!
    Wonder

  • Bug #18104 still exists

    Hello,
    I am quite disappointed about BDB 5. One of the most nasty bugs (#18104) still
    exists. As soon as you want to use the set_thread_count() feature, BDB will not
    free the thread-control-block. If you connect/disconnect, BDB will stop working
    quite early. You can re-produce this issue with any `db_*` tool.
    The testcase:
    #include <stdlib.h>
    #include <db.h>
    #define DIRECTORY "/tmp/db"
    int main()
        /* open environment */
        DB_ENV *handle;
        int status = db_env_create( &handle, 0 );
        status = handle->set_cachesize( handle, 0, 32*1024*1024, 0 );
        status = handle->set_thread_count( handle, 0x100 );
        status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
        if( status != 0 )
            return 1;
        /* raise error "Unable to allocate thread control block" */
        for( ;; )
            system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc" );
        return 0;
    }

    Hi Sandra,
    Hi Greg,
    Our architecture is quite simple: a cron-job runs ENV->failchk() and ENV->txn_checkpoint()
    once a minute (which should be fine, shouldn't it?)
    The problem, neither ENV->close() nor ENV->failchk() removes outdated items from the
    thread-control-block. One would expect, that the PID is added to the block as soon as the
    process connects and removed when the process disconnects. But it is not.
    If the block runs out of memory, BDB requires a recovery (see the down below testcase).
    Usually ENV->failchk() cleans the thread-control-block, as soon as there are more items in
    the block than "thread_count". Today three times it did not even remove them, if there were
    more than "thread_count" items in the block - but this happend sporadic so it was difficult
    to create a testcase.
    Once ENV->failchk() cleans the thread-control-block, BDB works as expected. If a process
    connects, the PID is added to the block, and as soon as the process disconnects, the PID is
    removed from the thread-control-block. You can test this by looping the first loop 1090 times.
    The testcase:
    #include <stdio.h>
    #include <stdlib.h>
    #include <signal.h>
    #include <db.h>
    #include <errno.h>
    #define DIRECTORY "/tmp/db"
    static int bdb_is_alive( DB_ENV *dbenv, pid_t pid, db_threadid_t tid, u_int32_t flags )
        int status;
        status = kill( pid, 0 );
        if( status != -1 )
            return 1;
        if( errno == ESRCH )
            return 0;
        exit( 1 );  /* should never happen */
    int main()
        system( "mkdir -p " DIRECTORY );
        system( "db_recover -h " DIRECTORY );
        system( "rm -rfv " DIRECTORY "/*" );
        /* open environment */
        int status, i;
        DB_ENV *handle;
        status = db_env_create( &handle, 0 );
        status = handle->set_cachesize( handle, 0, 32*1024*1024, 0 );
        status = handle->set_thread_count( handle, 1091 );
        status = handle->set_isalive( handle, bdb_is_alive );
        status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
        if( status != 0 )
            return 1;   /* should never happen */
        status = handle->failchk( handle, 0 );
        status = handle->close( handle, 0 );
        /* Now start workers (`db_stat`) + failchks() */
        for( i=0; i < 1089; ++i )       /* thread_count - 2 */
            fprintf(stderr,"Number of items in the thread-control-block: "); fflush(stdout);
            system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc -l" );
            status = db_env_create( &handle, 0 );
            status = handle->set_isalive( handle, bdb_is_alive );
            status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
            if( status != 0 )
                return 1;   /* should never happen */
            status = handle->failchk( handle, 0 );      /* strange - does not remove the process-entries created by `db_stat` */
            if( status != 0 )
                return 1;   /* should never happen */
            status = handle->close( handle, 0 );
        /* raise error: "Unable to allocate thread control block" */
        for( i=1; i < 422; ++i )
            fprintf(stderr,"Number of items in the thread-control-block: "); fflush(stdout);
            system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc -l" );
        /* You should see on stderr:
                db_stat: Unable to allocate thread control block
                db_stat: Unable to allocate thread control block
                db_stat: DB_ENV->open: /tmp/db: Cannot allocate memory
        fprintf(stderr,"BDB is dead now. Only `db_recover` helps...\n%s\n",db_version(NULL,NULL,NULL));
        return 0;
    }

  • Camera issue still exists in AIR 16 beta

    Just tested my simple camera tester with Air 16 Beta and the issue still exists.
    Im refering to the issue were the camera stops responding after a number of attaches/detaches to a video object and if attached multiple calls to setMode.
    The issue im referring to is Bug#3850401 - Handle leak with video.attachCamera leading to inoperable camera

    Just tested my simple camera tester with Air 16 Beta and the issue still exists.
    Im refering to the issue were the camera stops responding after a number of attaches/detaches to a video object and if attached multiple calls to setMode.
    The issue im referring to is Bug#3850401 - Handle leak with video.attachCamera leading to inoperable camera

  • Wifi problems still exists?

    I sold my gs60 that had an 870m back in january mainly because i couldnt bare the wifi problem. I really loved the laptop and everything about it but everytime my laptop overheated the wifi would drop from 100mb to 1mb or less at times, monday im thinking of buying a new msi laptop and im wondering if these models that are currently being sold on amazon and etc still have the wifi problem or has it been fixed?
    And trust me, i read the forums, i read the guides and im pretty decent with computers/software and etc, i uninstalled, reinstalled, updated it, changes adv. settings and even though it improves certain things the problem was still there. So does it still exist?
    Or should i just buy a USB wifi?

    This problem only occurs in earlier patches of Intel WiFi card of GS60 2Px (8xx series of NVIDIA graphic cards) and not every unit was affected.
    If you don't want to take this risk, I'll suggest you buy GS60 2Qx (9xx series of NVIDIA graphic cards).
    USB WiFi is a good idea. It certainly has a better signal comparing to the WiFi embedded in the body of the laptop.

  • Every once in a while when I open my mail or a page I get nothing but strange lines of symbols.  Many of the symbols are black triangles with question marks in the center.  I completely reset it like new, but problem still exists

    Every once in a while when I open my mail or open a page I get lines of strange symbols like black triangles with question marks in the center.  I have reset the ipad2 to new condition but the problem still exists.

    A reset does not make tthe iPad "like new."
    First, let's ensure that we agree on just what is a Reset...
    Hold down the on/off switch and the Home button simultaneously until you see the Apple logo.  Ignore the "Slide to power off" text if it appears.  You will not lose any apps, data, music, movies, settings, etc.
    If the Reset doesn't work, try a Restore.  Note that it's nowhere near as quick as a Reset.  Connect via cable to the computer that you use for sync.  From iTunes, select the iPad/iPod and then select the Summary tab.  Follow directions for Restore and be sure to say "yes" to the backup.  You will be warned that all data (apps, music, movies, etc.) will be erased but, as the Restore finishes, you will be asked if you wish the contents of the backup to be copied to the iPad/iPod.  Again, say "yes."
    At the end of the basic Restore, you will be asked if you wish to sync the iPad/iPod.  As before, say "yes."  Note that that sync selection will disappear and the Restore will end if you do not respond within a reasonable time.  If that happens, only the apps that are part of the IOS will appear on your device.  Corrective action is simple -  choose manual "Sync" from the bottom right of iTunes.
    If you're unable to do the Restore, go into Recovery Mode per the instructions here.

  • Bug in exists() function of XI Graphical Mapping Tool?

    Hi!
    If I connect a source field with the exists() function in XI Graphical Mapping Tool and the tag exists it returns TRUE, otherwise it returns FALSE, so everything works as expected.
    But I have to connect a user-defined function with exists(). The user-defined function will either calculate a value or set Resultset.SUPPRESS.
    If there is a value the exits() function returns TRUE, however if Resultset.SUPPRESS is set it does also return TRUE! This looks to me like a bug in exists() function. Shouldn't it always return FALSE if the input is Resultset.SUPPRESS?
    Regards, Tanja

    Hi Stefan!
    > The exists() function checks, if a queue is empty.
    > An empty queue is <b>not</b> represented by the
    > SUPPRESS value.
    > If inside a queue there is a SUPPRESS value, the
    > queue is <b>not</b> empty.
    Ok, so it's not a bug and the exists() function is working as expected.
    > If you want the exist() function after a UDF, provide
    > an empty queue, or easier: return the values "true"
    > or "false" directly from the UDF.
    Yes, that's how I actually solved the problem. The UDF was used at several places where the ResultList.SUPPRESS output was needed. So I copied the UDF and changed it so that the output was TRUE or FALSE instead.
    Regards, Tanja

  • IPad Safari Landscape innerHeight/outerHeight bug still not fixed in iOS 7.1.1

    iPad Safari Landscape innerHeight/outerHeight bug still not fixed in iOS 7.1.1
    No bug in Chrome or other third party browsers.
    When are Apple going to fix this bug? It's painful.
    more info here:
    http://stackoverflow.com/questions/19012135/ios-7-ipad-safari-landscape-innerhei ght-outerheight-layout-issue

    Tell Apple not other users.
    Use http://www.apple.com/feedback/ipad.html

  • My IPOD Classic Video 5. Gen. showed videos, but now it does no longer show them, instead i see a black picture on my IPOD and it doesn`t work. I have to restart it every time, i try it. i restore the software with itunes, but the problem still exists.

    My IPOD Classic Video 5. Gen. showed videos, but now it does no longer show them, instead i see a black picture on my IPOD and it doesn`t work. I have to restart it every time, i try it. i restore the software with itunes, but the problem still exists.
    The Videos are showed up front 4 months, but now they are no longer to be seen. When you star a video first the hard drive starts, but then it stops and hangs up. I have to restart it, starting with the apple logo....

    Here is what worked for me:
      My usb hub, being usb2, was too fast. I moved the wire to a usb port directory on my pc. That is a usb1 port which is slow enough to run your snyc.

Maybe you are looking for

  • Sync "Purchased Playlist" to iphone and ipad

    I am having problems getting my purchased playlist to sync to my iphone and ipad. Right now I did something and the playlist exists, but has no songs. HELP!!!

  • Acrobat 9 Pro をwindows8の新しいパソコンにインストールしたいのですが.出来ません.

    Acrobat 9 Pro をwindows8の新しいパソコンにインストールしたいのですが.シリアル番号が違いますと表示されてしまいます. カスタマーサービスでシリアル番号を確認してもらいましたが.問題はないとのことでした. シリアル番号を正しく入力しても先に進めないのですが.Acrobat9proはWindows8にインストールは出来ないということなのでしょうか? もしインストール出来る方法があれば.教えてください.

  • Sleep Light Most Annoying thing ever.

    I was wondering if t here is a way to turn off the sleep light or if Apple could programm a way in the future to turn off this sleep light. I have my mac in my bedroom and cannot turn it against the wall or throw something over it. I have taped stuff

  • Time machine open preferences takes long time

    I use Time Machine manually to backup my digital audio workstation.  I select Open Time Machine Preferences from the Menu Bar, then Back Up Now so I can watch the progress.  Most of the time, the first step above is instantaneous, but every once in a

  • Material master codification & inventory mgmt- construction industry

    Hi, I am designing the process for a client in the construction industry. The implementation will include integration with PS module. The client is working on different projects and the materials requirement for each project differ from the other. Ex