```python
def glob_path(pattern: str, path: str) -> bool:
    if not isinstance(pattern, str) or not isinstance(path, str):
        raise ValueError("Pattern and path must be strings")
    if pattern == "" or path == "":
        raise ValueError("Pattern and path cannot be empty")

    def match_segment(patt, seg):
        return all(p == s for p, s in zip(patt, seg)) if "?" in patt else patt == seg

    segments = path.split("/")
    parts = pattern.split("/")

    if len(parts) != len(segments):
        return False

    for part, segment in zip(parts, segments):
        if part == "*":
            continue
        elif match_segment(part, segment):
            continue
        else:
            return False

    return True
```