#931 new
jesper (at noehr)

Mailmate crashes while importing IMAP

Reported by jesper (at noehr) | October 15th, 2014 @ 06:45 PM

Hi,

I'm trying to get started with MailMate, and during the process of seemingly importing my entire IMAP history, it routinely crashes. I restart the application to fetch a little bit more, but anywhere from 2 to 10 minutes in, it crashes.

Granted, I do have a large email account, with about 90.000 unread messages (don't ask), and many more than that archived. But, I don't think that's a good reason for why this shouldn't work.

I opted in for sending crash reports, so you should already have some information logged on your end. I'm on Yosemite, but have tried using MailMate previously, running in to the same problem.

Please advise.

Comments and changes to this ticket

  • benny

    benny October 15th, 2014 @ 06:52 PM

    MailMate is still a 32 bit application and therefore it can actually run out of address space. It shouldn't happen for 90K messages though. Do you have any extremely large messages in the account?

    Ah, you write 'many more than that'. Do you have an estimate of the total number of messages?

    It is possible to take individual mailboxes offline if you want to see if you can track down the problem to a particular mailbox or message. You can also unsubscribe mailboxes if there are some you do not need (“File ▸ Edit IMAP Account ▸ ...” and then “Subscriptions...”).

  • jesper (at noehr)

    jesper (at noehr) October 15th, 2014 @ 06:55 PM

    I don't have an estimate of the number of messages, but I can see that it's a total of about 12GB. I would guess the number of messages is in the range of 3-400k. I don't think there are any extremely large messages in there, either.

  • jesper (at noehr)

    jesper (at noehr) October 15th, 2014 @ 07:01 PM

    Here's the crash report:

    Process:               MailMate [3513]
    Path:                  /Applications/MailMate.app/Contents/MacOS/MailMate
    Identifier:            com.freron.MailMate
    Version:               1.8 (4576)
    Code Type:             X86 (Native)
    Parent Process:        ??? [1]
    Responsible:           MailMate [3513]
    User ID:               501
    
    Date/Time:             2014-10-15 11:56:28.429 -0700
    OS Version:            Mac OS X 10.10 (14A386b)
    Report Version:        11
    Anonymous UUID:        A60E879F-5AAD-E44A-4A64-A4D27CC76695
    
    Sleep/Wake UUID:       8E4D6CE6-EA39-4618-B734-A213816C7C1C
    
    Time Awake Since Boot: 68000 seconds
    Time Since Wake:       17000 seconds
    
    Crashed Thread:        0  Dispatch queue: com.apple.main-thread
    
    Exception Type:        EXC_CRASH (SIGABRT)
    Exception Codes:       0x0000000000000000, 0x0000000000000000
    
    Application Specific Information:
    abort() called
    
    Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
    0   libsystem_kernel.dylib          0x92a7a69e __pthread_kill + 10
    1   libsystem_pthread.dylib         0x97071fd5 pthread_kill + 101
    2   libsystem_c.dylib               0x91130efe abort + 156
    3   OakUtilities.dylib              0x00829d2b file_mmap_t::file_mmap_t(std::string const&) + 347
    4   OakDatabase.dylib               0x0035d81b database_header_oracle_t::load() + 537
    5   OakDatabase.dylib               0x0035cbc2 database_header_oracle_t::database_header_oracle_t(std::string const&, std::string const&, changes_callback_info_t const&, bool) + 1288
    6   OakDatabase.dylib               0x0035c6b4 database_header_oracle_t::database_header_oracle_t(std::string const&, std::string const&, changes_callback_info_t const&, bool) + 46
    7   OakDatabase.dylib               0x003d3919 oracle_manager_t::oracle_for_field_path(std::vector<std::string, std::allocator<std::string> > const&, bool) + 937
    8   OakDatabase.dylib               0x003d351a oracle_manager_t::oracle_for_header_string(std::string const&) + 70
    9   OakDatabase.dylib               0x00345373 database_t::add_body_part(body_part_t&, database::add_options_t, bool, int) + 3303
    10  OakDatabase.dylib               0x00341a17 database_t::add_message(std::tr1::shared_ptr<body_part_t>, database::add_options_t) + 1857
    11  OakDatabase.dylib               0x0039727b imap_account_t::handle_data(std::tr1::shared_ptr<connection_result_t>) + 22283
    12  OakProtocols.dylib              0x00740ef1 connection_command_t::handle_reply(connection_command_t::result_t const&) + 309
    13  OakProtocols.dylib              0x00742186 oak::server_t<connection_command_t, std::tr1::shared_ptr<connection_t>, connection_command_t::result_t>::master_run() + 124
    14  OakProtocols.dylib              0x0074107f cf::member_callback_t<oak::server_t<connection_command_t, std::tr1::shared_ptr<connection_t>, connection_command_t::result_t> >::member_callback_t(void (oak::server_t<connection_command_t, std::tr1::shared_ptr<connection_t>, connection_command_t::result_t>::*)(), oak::server_t<connection_command_t, std::tr1::shared_ptr<connection_t>, connection_command_t::result_t>*)::helper_t::wake_up(void*) + 33
    15  com.apple.CoreFoundation        0x96715d1f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    16  com.apple.CoreFoundation        0x9670787e __CFRunLoopDoSources0 + 462
    17  com.apple.CoreFoundation        0x96706ce2 __CFRunLoopRun + 994
    18  com.apple.CoreFoundation        0x96706696 CFRunLoopRunSpecific + 390
    19  com.apple.CoreFoundation        0x967064fb CFRunLoopRunInMode + 123
    20  com.apple.HIToolbox             0x904cf178 RunCurrentEventLoopInMode + 262
    21  com.apple.HIToolbox             0x904ceeb1 ReceiveNextEventCommon + 494
    22  com.apple.HIToolbox             0x904cecac _BlockUntilNextEventMatchingListInModeWithFilter + 99
    23  com.apple.AppKit                0x94477f59 _DPSNextEvent + 734
    24  com.apple.AppKit                0x944777a1 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 186
    25  com.apple.AppKit                0x94469f6c -[NSApplication run] + 907
    26  com.apple.AppKit                0x944534d0 NSApplicationMain + 2082
    27  com.freron.MailMate             0x00020b2f main + 677
    28  com.freron.MailMate             0x00003725 start + 53
    
    Thread 1:: Dispatch queue: com.apple.libdispatch-manager
    0   libsystem_kernel.dylib          0x92a7b8d2 kevent64 + 10
    1   libdispatch.dylib               0x93a6873f _dispatch_mgr_invoke + 245
    2   libdispatch.dylib               0x93a683a2 _dispatch_mgr_thread + 52
    
    Thread 2:: main::signal_handler
    0   libsystem_kernel.dylib          0x92a7ac3a __sigwait + 10
    1   libsystem_pthread.dylib         0x9707426a sigwait$UNIX2003 + 71
    2   com.freron.MailMate             0x0002083b signal_handler_thread(void*) + 63
    3   libsystem_pthread.dylib         0x9706fecf _pthread_body + 138
    4   libsystem_pthread.dylib         0x9706fe45 _pthread_start + 162
    5   libsystem_pthread.dylib         0x9706df0e thread_start + 34
    
    Thread 3:: IMAP connection
    0   libsystem_platform.dylib        0x9652ae83 _os_lock_spin_lock + 21
    1   libsystem_malloc.dylib          0x99e87fc6 szone_free_definite_size + 495
    2   libsystem_malloc.dylib          0x99e86e3a free + 301
    3   regexp.dylib                    0x00a21b58 onig_region_free + 51
    4   regexp.dylib                    0x00a11e3d regexp::search(regexp::pattern_t const&, char const*, char const*, char const*, char const*, unsigned int)::helper_t::region_free(re_registers*) + 25
    5   regexp.dylib                    0x00a120c0 std::tr1::_Sp_counted_base_impl<re_registers*, void (*)(re_registers*), (__gnu_cxx::_Lock_policy)2>::_M_dispose() + 18
    6   com.freron.MailMate             0x000255b7 std::tr1::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() + 39
    7   regexp.dylib                    0x00a11d0b regexp::search(regexp::pattern_t const&, char const*, char const*, char const*, char const*, unsigned int) + 187
    8   com.freron.MailMate.OakMIME     0x00691120 char const* parse_headers_func<std::multimap<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > >(char const*, char const*, std::multimap<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&, mime_errors_handler_t&, std::string const&, std::string const&) + 1684
    9   com.freron.MailMate.OakMIME     0x0063c02f body_part_t::init(char const*, char const*) + 717
    10  com.freron.MailMate.OakMIME     0x0063bd33 body_part_t::init(std::vector<char, std::allocator<char> >&) + 159
    11  com.freron.MailMate.OakMIME     0x00671f61 copy_body_part(std::vector<char, std::allocator<char> >&) + 549
    12  com.freron.MailMate.OakMIME     0x00672017 create_body_part(std::vector<char, std::allocator<char> >&, bool) + 106
    13  OakProtocols.dylib              0x0075ea5c imap_t::parse_fetch_response(int) + 4772
    14  OakProtocols.dylib              0x007534a6 imap_t::parse_tagged_response(std::string const&) + 438
    15  OakProtocols.dylib              0x00753121 imap_t::read_and_parse_responses(std::string const&, bool) + 471
    16  OakProtocols.dylib              0x00751c79 imap_t::write_command_and_read_responses(std::string const&, ...) + 91
    17  OakProtocols.dylib              0x00748b0d imap_t::fetch_messages() + 2405
    18  OakProtocols.dylib              0x007438d2 imap_t::run_action() + 336
    19  OakProtocols.dylib              0x0073b916 connection_t::run() + 458
    20  OakProtocols.dylib              0x00740c71 connection_command_t::handle_request(std::tr1::shared_ptr<connection_t>) + 197
    21  OakProtocols.dylib              0x007423a1 oak::server_t<connection_command_t, std::tr1::shared_ptr<connection_t>, connection_command_t::result_t>::server_run() + 289
    22  OakProtocols.dylib              0x00741057 oak::server_t<connection_command_t, std::tr1::shared_ptr<connection_t>, connection_command_t::result_t>::server_t(unsigned long)::runner_t::server(void*) + 17
    23  libsystem_pthread.dylib         0x9706fecf _pthread_body + 138
    24  libsystem_pthread.dylib         0x9706fe45 _pthread_start + 162
    25  libsystem_pthread.dylib         0x9706df0e thread_start + 34
    
    [chopped due to large body]
    
    VM Region Summary:
    ReadOnly portion of Libraries: Total=232.7M resident=80.1M(34%) swapped_out_or_unallocated=152.6M(66%)
    Writable regions: Total=2.4G written=2.3G(95%) resident=2.3G(96%) swapped_out=4K(0%) unallocated=95.0M(4%)
     
    REGION TYPE                      VIRTUAL
    ===========                      =======
    CG backing stores                  4420K
    CG image                            136K
    CG shared images                    208K
    CoreAnimation                        32K
    CoreData                              4K
    CoreServices                       2296K
    CoreUI image data                   100K
    Foundation                            4K
    Image IO                             92K
    JS garbage collector                320K
    Kernel Alloc Once                     4K
    MALLOC                              2.4G
    MALLOC (admin)                       48K
    Memory Tag 242                       12K
    OpenCL                               16K
    SQLite page cache                   384K
    Stack                              71.7M
    VM_ALLOCATE                        17.4M
    WebKit Malloc                       744K
    __DATA                             10.2M
    __IMAGE                             528K
    __LINKEDIT                         52.3M
    __OBJC                             4656K
    __TEXT                            180.3M
    __UNICODE                           544K
    mapped file                       868.1M
    shared memory                         4K
    ===========                      =======
    TOTAL                               3.5G
    

    As far as I can read, it does indeed crash in mmap. Would this be due to a very large message?

  • benny

    benny October 15th, 2014 @ 07:03 PM

    If MailMate manages to complete the synchronisation then I think it should be able to run without these crashes, but 3-400K is currently pushing it to its limit (it definitely wouldn't work well on my old hardware). I am of course aware of this, but I cannot promise you optimisations soon. I'm working on a 64 bit version and there is an experimental version available, but it uses even more memory than the 32 bit version does and therefore I cannot really recommend it. Nevertheless, here it is: http://updates.mailmate-app.com/archives/MailMate_yosemite_64bit.tbz

    By the way, I do get your crash reports (25). Interestingly, they are the only ones I've received for the latest version of MailMate (~1200 users have updated so far).

  • benny

    benny October 15th, 2014 @ 07:05 PM

    It could be a large message, but it could also just be the drop that spilled the cup (however that proverb is in English).

  • jesper (at noehr)

    jesper (at noehr) October 15th, 2014 @ 07:07 PM

    Feel free to switch to Danish, vi Danskere må jo støtte hinanden. :-)

  • jesper (at noehr)

    jesper (at noehr) October 15th, 2014 @ 07:08 PM

    Anyway, I'm running the 64-bit version you linked now, I'll let you know how it goes.

  • jesper (at noehr)

    jesper (at noehr) October 15th, 2014 @ 07:41 PM

    So far, so good. I wonder if running the 32 bit version after the initial import is done will work.

  • benny

    benny October 15th, 2014 @ 08:03 PM

    That would quite likely work (depending on your total number of messages).

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Mac OS X email client.

Shared Ticket Bins

People watching this ticket

Pages