[GH-ISSUE #266] Building on Linux fails #114

Closed
opened 2026-04-12 09:39:04 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @kisamoto on GitHub (Aug 3, 2023).
Original GitHub issue: https://github.com/ollama/ollama/issues/266

System info

Fedora 38
64GB Memory
go version go1.20 linux/amd64

Reproduction steps

  1. Clone repo
  2. Run go build .

Expected result

Ollama successfully builds

Actual result

Error trace (below)

Full stack trace

# github.com/jmorganca/ollama/llama
In file included from /usr/include/c++/13/string:51,
                 from llama-util.h:41,
                 from llama.cpp:35:
In static member function ‘static void std::__copy_move<false, false, std::random_access_iterator_tag>::__assign_one(_Tp*, _Up*) [with _Tp = const llama_grammar_element*; _Up = const llama_grammar_element* const]’,
    inlined from ‘static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = const llama_grammar_element* const; _Up = const llama_grammar_element*; bool _IsMove = false]’ at /usr/include/c++/13/bits/stl_algobase.h:440:20,
    inlined from ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = const llama_grammar_element* const*; _OI = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_algobase.h:506:30,
    inlined from ‘_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = const llama_grammar_element* const*; _OI = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_algobase.h:533:42,
    inlined from ‘_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, vector<const llama_grammar_element*> >; _OI = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_algobase.h:540:31,
    inlined from ‘_OI std::copy(_II, _II, _OI) [with _II = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, vector<const llama_grammar_element*> >; _OI = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_algobase.h:633:7,
    inlined from ‘static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, std::vector<const llama_grammar_element*> >; _ForwardIterator = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_uninitialized.h:147:27,
    inlined from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, vector<const llama_grammar_element*> >; _ForwardIterator = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_uninitialized.h:185:15,
    inlined from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, vector<const llama_grammar_element*> >; _ForwardIterator = const llama_grammar_element**; _Tp = const llama_grammar_element*]’ at /usr/include/c++/13/bits/stl_uninitialized.h:373:37,
    inlined from ‘std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:603:31,
    inlined from ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::vector<const llama_grammar_element*>; _Args = {const std::vector<const llama_grammar_element*, std::allocator<const llama_grammar_element*> >&}; _Tp = std::vector<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/new_allocator.h:187:4,
    inlined from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::vector<const llama_grammar_element*>; _Args = {const std::vector<const llama_grammar_element*, std::allocator<const llama_grammar_element*> >&}; _Tp = std::vector<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/alloc_traits.h:537:17,
    inlined from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::vector<const llama_grammar_element*>; _Alloc = std::allocator<std::vector<const llama_grammar_element*> >]’ at /usr/include/c++/13/bits/stl_vector.h:1283:30,
    inlined from ‘void llama_grammar_advance_stack(const std::vector<std::vector<llama_grammar_element> >&, const std::vector<const llama_grammar_element*>&, std::vector<std::vector<const llama_grammar_element*> >&)’ at llama.cpp:2186:29:
/usr/include/c++/13/bits/stl_algobase.h:398:17: warning: array subscript 0 is outside array bounds of ‘const llama_grammar_element* [0]’ [-Warray-bounds=]
  398 |         { *__to = *__from; }
      |           ~~~~~~^~~~~~~~~
In file included from /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h:33,
                 from /usr/include/c++/13/bits/allocator.h:46,
                 from /usr/include/c++/13/string:43:
In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = const llama_grammar_element*]’,
    inlined from ‘static _Tp* std::allocator_traits<std::allocator<_CharT> >::allocate(allocator_type&, size_type) [with _Tp = const llama_grammar_element*]’ at /usr/include/c++/13/bits/alloc_traits.h:482:28,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:378:33,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:375:7,
    inlined from ‘void std::_Vector_base<_Tp, _Alloc>::_M_create_storage(std::size_t) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:395:44,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::size_t, const allocator_type&) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:332:26,
    inlined from ‘std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:600:61,
    inlined from ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::vector<const llama_grammar_element*>; _Args = {const std::vector<const llama_grammar_element*, std::allocator<const llama_grammar_element*> >&}; _Tp = std::vector<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/new_allocator.h:187:4,
    inlined from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::vector<const llama_grammar_element*>; _Args = {const std::vector<const llama_grammar_element*, std::allocator<const llama_grammar_element*> >&}; _Tp = std::vector<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/alloc_traits.h:537:17,
    inlined from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::vector<const llama_grammar_element*>; _Alloc = std::allocator<std::vector<const llama_grammar_element*> >]’ at /usr/include/c++/13/bits/stl_vector.h:1283:30,
    inlined from ‘void llama_grammar_advance_stack(const std::vector<std::vector<llama_grammar_element> >&, const std::vector<const llama_grammar_element*>&, std::vector<std::vector<const llama_grammar_element*> >&)’ at llama.cpp:2186:29:
/usr/include/c++/13/bits/new_allocator.h:147:55: note: object of size 0 allocated by ‘operator new’
  147 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^

Originally created by @kisamoto on GitHub (Aug 3, 2023). Original GitHub issue: https://github.com/ollama/ollama/issues/266 ## System info Fedora 38 64GB Memory `go version go1.20 linux/amd64` ## Reproduction steps 1. Clone repo 2. Run `go build .` ## Expected result Ollama successfully builds ## Actual result Error trace (below) ### Full stack trace ``` # github.com/jmorganca/ollama/llama In file included from /usr/include/c++/13/string:51, from llama-util.h:41, from llama.cpp:35: In static member function ‘static void std::__copy_move<false, false, std::random_access_iterator_tag>::__assign_one(_Tp*, _Up*) [with _Tp = const llama_grammar_element*; _Up = const llama_grammar_element* const]’, inlined from ‘static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = const llama_grammar_element* const; _Up = const llama_grammar_element*; bool _IsMove = false]’ at /usr/include/c++/13/bits/stl_algobase.h:440:20, inlined from ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = const llama_grammar_element* const*; _OI = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_algobase.h:506:30, inlined from ‘_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = const llama_grammar_element* const*; _OI = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_algobase.h:533:42, inlined from ‘_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, vector<const llama_grammar_element*> >; _OI = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_algobase.h:540:31, inlined from ‘_OI std::copy(_II, _II, _OI) [with _II = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, vector<const llama_grammar_element*> >; _OI = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_algobase.h:633:7, inlined from ‘static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, std::vector<const llama_grammar_element*> >; _ForwardIterator = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_uninitialized.h:147:27, inlined from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, vector<const llama_grammar_element*> >; _ForwardIterator = const llama_grammar_element**]’ at /usr/include/c++/13/bits/stl_uninitialized.h:185:15, inlined from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator<const llama_grammar_element* const*, vector<const llama_grammar_element*> >; _ForwardIterator = const llama_grammar_element**; _Tp = const llama_grammar_element*]’ at /usr/include/c++/13/bits/stl_uninitialized.h:373:37, inlined from ‘std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:603:31, inlined from ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::vector<const llama_grammar_element*>; _Args = {const std::vector<const llama_grammar_element*, std::allocator<const llama_grammar_element*> >&}; _Tp = std::vector<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/new_allocator.h:187:4, inlined from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::vector<const llama_grammar_element*>; _Args = {const std::vector<const llama_grammar_element*, std::allocator<const llama_grammar_element*> >&}; _Tp = std::vector<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/alloc_traits.h:537:17, inlined from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::vector<const llama_grammar_element*>; _Alloc = std::allocator<std::vector<const llama_grammar_element*> >]’ at /usr/include/c++/13/bits/stl_vector.h:1283:30, inlined from ‘void llama_grammar_advance_stack(const std::vector<std::vector<llama_grammar_element> >&, const std::vector<const llama_grammar_element*>&, std::vector<std::vector<const llama_grammar_element*> >&)’ at llama.cpp:2186:29: /usr/include/c++/13/bits/stl_algobase.h:398:17: warning: array subscript 0 is outside array bounds of ‘const llama_grammar_element* [0]’ [-Warray-bounds=] 398 | { *__to = *__from; } | ~~~~~~^~~~~~~~~ In file included from /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h:33, from /usr/include/c++/13/bits/allocator.h:46, from /usr/include/c++/13/string:43: In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = const llama_grammar_element*]’, inlined from ‘static _Tp* std::allocator_traits<std::allocator<_CharT> >::allocate(allocator_type&, size_type) [with _Tp = const llama_grammar_element*]’ at /usr/include/c++/13/bits/alloc_traits.h:482:28, inlined from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:378:33, inlined from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:375:7, inlined from ‘void std::_Vector_base<_Tp, _Alloc>::_M_create_storage(std::size_t) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:395:44, inlined from ‘std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::size_t, const allocator_type&) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:332:26, inlined from ‘std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = const llama_grammar_element*; _Alloc = std::allocator<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/stl_vector.h:600:61, inlined from ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::vector<const llama_grammar_element*>; _Args = {const std::vector<const llama_grammar_element*, std::allocator<const llama_grammar_element*> >&}; _Tp = std::vector<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/new_allocator.h:187:4, inlined from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::vector<const llama_grammar_element*>; _Args = {const std::vector<const llama_grammar_element*, std::allocator<const llama_grammar_element*> >&}; _Tp = std::vector<const llama_grammar_element*>]’ at /usr/include/c++/13/bits/alloc_traits.h:537:17, inlined from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::vector<const llama_grammar_element*>; _Alloc = std::allocator<std::vector<const llama_grammar_element*> >]’ at /usr/include/c++/13/bits/stl_vector.h:1283:30, inlined from ‘void llama_grammar_advance_stack(const std::vector<std::vector<llama_grammar_element> >&, const std::vector<const llama_grammar_element*>&, std::vector<std::vector<const llama_grammar_element*> >&)’ at llama.cpp:2186:29: /usr/include/c++/13/bits/new_allocator.h:147:55: note: object of size 0 allocated by ‘operator new’ 147 | return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp))); | ^ ```
Author
Owner

@kisamoto commented on GitHub (Aug 3, 2023):

Despite the stack trace this wasn't actually an error. It built successfully and I'm running Ollama on Linux.

<!-- gh-comment-id:1663592058 --> @kisamoto commented on GitHub (Aug 3, 2023): Despite the stack trace this wasn't actually an error. It built successfully and I'm running Ollama on Linux.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/ollama#114